#pragma once
inline float** genPalette(const int n, const float from[3], const float to[3]) {
    float** palette = new float*[n];
    for (int i = 0; i < n; i++) {
        palette[i] = new float[3];
        for (int j = 0; j < 3; j++) {
            palette[i][j] = (to[j] * i + from[j] * (n - 1 - i)) / (n - 1);
        }
    }
    return palette;
}

// original colormaps licensed CC0, public domain, no attribution needed:
// https://github.com/BIDS/colormap/blob/master/LICENSE.txt
const int viridis_n = 256;
const float viridis[viridis_n][3] = {
    //{0.26700401, 0.00487433, 0.32941519}, {0.26851048, 0.00960483,
    // 0.33542652},
    {0., 0., 0.},
    {0.26851048, 0.00960483, 0.33542652},
    {0.26994384, 0.01462494, 0.34137895},
    {0.27130489, 0.01994186, 0.34726862},
    {0.27259384, 0.02556309, 0.35309303},
    {0.27380934, 0.03149748, 0.35885256},
    {0.27495242, 0.03775181, 0.36454323},
    {0.27602238, 0.04416723, 0.37016418},
    {0.2770184, 0.05034437, 0.37571452},
    {0.27794143, 0.05632444, 0.38119074},
    {0.27879067, 0.06214536, 0.38659204},
    {0.2795655, 0.06783587, 0.39191723},
    {0.28026658, 0.07341724, 0.39716349},
    {0.28089358, 0.07890703, 0.40232944},
    {0.28144581, 0.0843197, 0.40741404},
    {0.28192358, 0.08966622, 0.41241521},
    {0.28232739, 0.09495545, 0.41733086},
    {0.28265633, 0.10019576, 0.42216032},
    {0.28291049, 0.10539345, 0.42690202},
    {0.28309095, 0.11055307, 0.43155375},
    {0.28319704, 0.11567966, 0.43611482},
    {0.28322882, 0.12077701, 0.44058404},
    {0.28318684, 0.12584799, 0.44496},
    {0.283072, 0.13089477, 0.44924127},
    {0.28288389, 0.13592005, 0.45342734},
    {0.28262297, 0.14092556, 0.45751726},
    {0.28229037, 0.14591233, 0.46150995},
    {0.28188676, 0.15088147, 0.46540474},
    {0.28141228, 0.15583425, 0.46920128},
    {0.28086773, 0.16077132, 0.47289909},
    {0.28025468, 0.16569272, 0.47649762},
    {0.27957399, 0.17059884, 0.47999675},
    {0.27882618, 0.1754902, 0.48339654},
    {0.27801236, 0.18036684, 0.48669702},
    {0.27713437, 0.18522836, 0.48989831},
    {0.27619376, 0.19007447, 0.49300074},
    {0.27519116, 0.1949054, 0.49600488},
    {0.27412802, 0.19972086, 0.49891131},
    {0.27300596, 0.20452049, 0.50172076},
    {0.27182812, 0.20930306, 0.50443413},
    {0.27059473, 0.21406899, 0.50705243},
    {0.26930756, 0.21881782, 0.50957678},
    {0.26796846, 0.22354911, 0.5120084},
    {0.26657984, 0.2282621, 0.5143487},
    {0.2651445, 0.23295593, 0.5165993},
    {0.2636632, 0.23763078, 0.51876163},
    {0.26213801, 0.24228619, 0.52083736},
    {0.26057103, 0.2469217, 0.52282822},
    {0.25896451, 0.25153685, 0.52473609},
    {0.25732244, 0.2561304, 0.52656332},
    {0.25564519, 0.26070284, 0.52831152},
    {0.25393498, 0.26525384, 0.52998273},
    {0.25219404, 0.26978306, 0.53157905},
    {0.25042462, 0.27429024, 0.53310261},
    {0.24862899, 0.27877509, 0.53455561},
    {0.2468114, 0.28323662, 0.53594093},
    {0.24497208, 0.28767547, 0.53726018},
    {0.24311324, 0.29209154, 0.53851561},
    {0.24123708, 0.29648471, 0.53970946},
    {0.23934575, 0.30085494, 0.54084398},
    {0.23744138, 0.30520222, 0.5419214},
    {0.23552606, 0.30952657, 0.54294396},
    {0.23360277, 0.31382773, 0.54391424},
    {0.2316735, 0.3181058, 0.54483444},
    {0.22973926, 0.32236127, 0.54570633},
    {0.22780192, 0.32659432, 0.546532},
    {0.2258633, 0.33080515, 0.54731353},
    {0.22392515, 0.334994, 0.54805291},
    {0.22198915, 0.33916114, 0.54875211},
    {0.22005691, 0.34330688, 0.54941304},
    {0.21812995, 0.34743154, 0.55003755},
    {0.21620971, 0.35153548, 0.55062743},
    {0.21429757, 0.35561907, 0.5511844},
    {0.21239477, 0.35968273, 0.55171011},
    {0.2105031, 0.36372671, 0.55220646},
    {0.20862342, 0.36775151, 0.55267486},
    {0.20675628, 0.37175775, 0.55311653},
    {0.20490257, 0.37574589, 0.55353282},
    {0.20306309, 0.37971644, 0.55392505},
    {0.20123854, 0.38366989, 0.55429441},
    {0.1994295, 0.38760678, 0.55464205},
    {0.1976365, 0.39152762, 0.55496905},
    {0.19585993, 0.39543297, 0.55527637},
    {0.19410009, 0.39932336, 0.55556494},
    {0.19235719, 0.40319934, 0.55583559},
    {0.19063135, 0.40706148, 0.55608907},
    {0.18892259, 0.41091033, 0.55632606},
    {0.18723083, 0.41474645, 0.55654717},
    {0.18555593, 0.4185704, 0.55675292},
    {0.18389763, 0.42238275, 0.55694377},
    {0.18225561, 0.42618405, 0.5571201},
    {0.18062949, 0.42997486, 0.55728221},
    {0.17901879, 0.43375572, 0.55743035},
    {0.17742298, 0.4375272, 0.55756466},
    {0.17584148, 0.44128981, 0.55768526},
    {0.17427363, 0.4450441, 0.55779216},
    {0.17271876, 0.4487906, 0.55788532},
    {0.17117615, 0.4525298, 0.55796464},
    {0.16964573, 0.45626209, 0.55803034},
    {0.16812641, 0.45998802, 0.55808199},
    {0.1666171, 0.46370813, 0.55811913},
    {0.16511703, 0.4674229, 0.55814141},
    {0.16362543, 0.47113278, 0.55814842},
    {0.16214155, 0.47483821, 0.55813967},
    {0.16066467, 0.47853961, 0.55811466},
    {0.15919413, 0.4822374, 0.5580728},
    {0.15772933, 0.48593197, 0.55801347},
    {0.15626973, 0.4896237, 0.557936},
    {0.15481488, 0.49331293, 0.55783967},
    {0.15336445, 0.49700003, 0.55772371},
    {0.1519182, 0.50068529, 0.55758733},
    {0.15047605, 0.50436904, 0.55742968},
    {0.14903918, 0.50805136, 0.5572505},
    {0.14760731, 0.51173263, 0.55704861},
    {0.14618026, 0.51541316, 0.55682271},
    {0.14475863, 0.51909319, 0.55657181},
    {0.14334327, 0.52277292, 0.55629491},
    {0.14193527, 0.52645254, 0.55599097},
    {0.14053599, 0.53013219, 0.55565893},
    {0.13914708, 0.53381201, 0.55529773},
    {0.13777048, 0.53749213, 0.55490625},
    {0.1364085, 0.54117264, 0.55448339},
    {0.13506561, 0.54485335, 0.55402906},
    {0.13374299, 0.54853458, 0.55354108},
    {0.13244401, 0.55221637, 0.55301828},
    {0.13117249, 0.55589872, 0.55245948},
    {0.1299327, 0.55958162, 0.55186354},
    {0.12872938, 0.56326503, 0.55122927},
    {0.12756771, 0.56694891, 0.55055551},
    {0.12645338, 0.57063316, 0.5498411},
    {0.12539383, 0.57431754, 0.54908564},
    {0.12439474, 0.57800205, 0.5482874},
    {0.12346281, 0.58168661, 0.54744498},
    {0.12260562, 0.58537105, 0.54655722},
    {0.12183122, 0.58905521, 0.54562298},
    {0.12114807, 0.59273889, 0.54464114},
    {0.12056501, 0.59642187, 0.54361058},
    {0.12009154, 0.60010387, 0.54253043},
    {0.11973756, 0.60378459, 0.54139999},
    {0.11951163, 0.60746388, 0.54021751},
    {0.11942341, 0.61114146, 0.53898192},
    {0.11948255, 0.61481702, 0.53769219},
    {0.11969858, 0.61849025, 0.53634733},
    {0.12008079, 0.62216081, 0.53494633},
    {0.12063824, 0.62582833, 0.53348834},
    {0.12137972, 0.62949242, 0.53197275},
    {0.12231244, 0.63315277, 0.53039808},
    {0.12344358, 0.63680899, 0.52876343},
    {0.12477953, 0.64046069, 0.52706792},
    {0.12632581, 0.64410744, 0.52531069},
    {0.12808703, 0.64774881, 0.52349092},
    {0.13006688, 0.65138436, 0.52160791},
    {0.13226797, 0.65501363, 0.51966086},
    {0.13469183, 0.65863619, 0.5176488},
    {0.13733921, 0.66225157, 0.51557101},
    {0.14020991, 0.66585927, 0.5134268},
    {0.14330291, 0.66945881, 0.51121549},
    {0.1466164, 0.67304968, 0.50893644},
    {0.15014782, 0.67663139, 0.5065889},
    {0.15389405, 0.68020343, 0.50417217},
    {0.15785146, 0.68376525, 0.50168574},
    {0.16201598, 0.68731632, 0.49912906},
    {0.1663832, 0.69085611, 0.49650163},
    {0.1709484, 0.69438405, 0.49380294},
    {0.17570671, 0.6978996, 0.49103252},
    {0.18065314, 0.70140222, 0.48818938},
    {0.18578266, 0.70489133, 0.48527326},
    {0.19109018, 0.70836635, 0.48228395},
    {0.19657063, 0.71182668, 0.47922108},
    {0.20221902, 0.71527175, 0.47608431},
    {0.20803045, 0.71870095, 0.4728733},
    {0.21400015, 0.72211371, 0.46958774},
    {0.22012381, 0.72550945, 0.46622638},
    {0.2263969, 0.72888753, 0.46278934},
    {0.23281498, 0.73224735, 0.45927675},
    {0.2393739, 0.73558828, 0.45568838},
    {0.24606968, 0.73890972, 0.45202405},
    {0.25289851, 0.74221104, 0.44828355},
    {0.25985676, 0.74549162, 0.44446673},
    {0.26694127, 0.74875084, 0.44057284},
    {0.27414922, 0.75198807, 0.4366009},
    {0.28147681, 0.75520266, 0.43255207},
    {0.28892102, 0.75839399, 0.42842626},
    {0.29647899, 0.76156142, 0.42422341},
    {0.30414796, 0.76470433, 0.41994346},
    {0.31192534, 0.76782207, 0.41558638},
    {0.3198086, 0.77091403, 0.41115215},
    {0.3277958, 0.77397953, 0.40664011},
    {0.33588539, 0.7770179, 0.40204917},
    {0.34407411, 0.78002855, 0.39738103},
    {0.35235985, 0.78301086, 0.39263579},
    {0.36074053, 0.78596419, 0.38781353},
    {0.3692142, 0.78888793, 0.38291438},
    {0.37777892, 0.79178146, 0.3779385},
    {0.38643282, 0.79464415, 0.37288606},
    {0.39517408, 0.79747541, 0.36775726},
    {0.40400101, 0.80027461, 0.36255223},
    {0.4129135, 0.80304099, 0.35726893},
    {0.42190813, 0.80577412, 0.35191009},
    {0.43098317, 0.80847343, 0.34647607},
    {0.44013691, 0.81113836, 0.3409673},
    {0.44936763, 0.81376835, 0.33538426},
    {0.45867362, 0.81636288, 0.32972749},
    {0.46805314, 0.81892143, 0.32399761},
    {0.47750446, 0.82144351, 0.31819529},
    {0.4870258, 0.82392862, 0.31232133},
    {0.49661536, 0.82637633, 0.30637661},
    {0.5062713, 0.82878621, 0.30036211},
    {0.51599182, 0.83115784, 0.29427888},
    {0.52577622, 0.83349064, 0.2881265},
    {0.5356211, 0.83578452, 0.28190832},
    {0.5455244, 0.83803918, 0.27562602},
    {0.55548397, 0.84025437, 0.26928147},
    {0.5654976, 0.8424299, 0.26287683},
    {0.57556297, 0.84456561, 0.25641457},
    {0.58567772, 0.84666139, 0.24989748},
    {0.59583934, 0.84871722, 0.24332878},
    {0.60604528, 0.8507331, 0.23671214},
    {0.61629283, 0.85270912, 0.23005179},
    {0.62657923, 0.85464543, 0.22335258},
    {0.63690157, 0.85654226, 0.21662012},
    {0.64725685, 0.85839991, 0.20986086},
    {0.65764197, 0.86021878, 0.20308229},
    {0.66805369, 0.86199932, 0.19629307},
    {0.67848868, 0.86374211, 0.18950326},
    {0.68894351, 0.86544779, 0.18272455},
    {0.69941463, 0.86711711, 0.17597055},
    {0.70989842, 0.86875092, 0.16925712},
    {0.72039115, 0.87035015, 0.16260273},
    {0.73088902, 0.87191584, 0.15602894},
    {0.74138803, 0.87344918, 0.14956101},
    {0.75188414, 0.87495143, 0.14322828},
    {0.76237342, 0.87642392, 0.13706449},
    {0.77285183, 0.87786808, 0.13110864},
    {0.78331535, 0.87928545, 0.12540538},
    {0.79375994, 0.88067763, 0.12000532},
    {0.80418159, 0.88204632, 0.11496505},
    {0.81457634, 0.88339329, 0.11034678},
    {0.82494028, 0.88472036, 0.10621724},
    {0.83526959, 0.88602943, 0.1026459},
    {0.84556056, 0.88732243, 0.09970219},
    {0.8558096, 0.88860134, 0.09745186},
    {0.86601325, 0.88986815, 0.09595277},
    {0.87616824, 0.89112487, 0.09525046},
    {0.88627146, 0.89237353, 0.09537439},
    {0.89632002, 0.89361614, 0.09633538},
    {0.90631121, 0.89485467, 0.09812496},
    {0.91624212, 0.89609127, 0.1007168},
    {0.92610579, 0.89732977, 0.10407067},
    {0.93590444, 0.8985704, 0.10813094},
    {0.94563626, 0.899815, 0.11283773},
    {0.95529972, 0.90106534, 0.11812832},
    {0.96489353, 0.90232311, 0.12394051},
    {0.97441665, 0.90358991, 0.13021494},
    {0.98386829, 0.90486726, 0.13689671},
    {0.99324789, 0.90615657, 0.1439362}};

const int parula_n = 256;
const float parula[parula_n][3] = {
    {0.26710521, 0.03311059, 0.6188155},  {0.26493929, 0.04780926, 0.62261795},
    {0.26260545, 0.06084214, 0.62619176}, {0.26009691, 0.07264411, 0.62951561},
    {0.25740785, 0.08360391, 0.63256745}, {0.25453369, 0.09395358, 0.63532497},
    {0.25147146, 0.10384228, 0.6377661},  {0.24822014, 0.11337029, 0.6398697},
    {0.24478105, 0.12260661, 0.64161629}, {0.24115816, 0.131599, 0.6429888},
    {0.23735836, 0.14038009, 0.64397346}, {0.23339166, 0.14897137, 0.64456048},
    {0.22927127, 0.15738602, 0.64474476}, {0.22501278, 0.16563165, 0.64452595},
    {0.22063349, 0.17371215, 0.64390834}, {0.21616055, 0.18162302, 0.64290515},
    {0.21161851, 0.18936156, 0.64153295}, {0.20703353, 0.19692415, 0.63981287},
    {0.20243273, 0.20430706, 0.63776986}, {0.19784363, 0.211507, 0.63543183},
    {0.19329361, 0.21852157, 0.63282872}, {0.18880937, 0.2253495, 0.62999156},
    {0.18442119, 0.23198815, 0.62695569}, {0.18014936, 0.23844124, 0.62374886},
    {0.17601569, 0.24471172, 0.62040016}, {0.17204028, 0.25080356, 0.61693715},
    {0.16824123, 0.25672163, 0.6133854},  {0.16463462, 0.26247158, 0.60976836},
    {0.16123449, 0.26805963, 0.60610723}, {0.15805279, 0.27349243, 0.60242099},
    {0.15509948, 0.27877688, 0.59872645}, {0.15238249, 0.28392004, 0.59503836},
    {0.14990781, 0.28892902, 0.59136956}, {0.14767951, 0.29381086, 0.58773113},
    {0.14569979, 0.29857245, 0.58413255}, {0.1439691, 0.30322055, 0.58058191},
    {0.14248613, 0.30776167, 0.57708599}, {0.14124797, 0.31220208, 0.57365049},
    {0.14025018, 0.31654779, 0.57028011}, {0.13948691, 0.32080454, 0.5669787},
    {0.13895174, 0.32497744, 0.56375063}, {0.13863958, 0.32907012, 0.56060453},
    {0.138537, 0.3330895, 0.55753513},    {0.13863384, 0.33704026, 0.55454374},
    {0.13891931, 0.34092684, 0.55163126}, {0.13938212, 0.34475344, 0.54879827},
    {0.14001061, 0.34852402, 0.54604503}, {0.14079292, 0.35224233, 0.54337156},
    {0.14172091, 0.35590982, 0.54078769}, {0.14277848, 0.35953205, 0.53828312},
    {0.14395358, 0.36311234, 0.53585661}, {0.1452346, 0.36665374, 0.5335074},
    {0.14661019, 0.3701591, 0.5312346},   {0.14807104, 0.37363011, 0.52904278},
    {0.1496059, 0.3770697, 0.52692951},   {0.15120289, 0.3804813, 0.52488853},
    {0.15285214, 0.38386729, 0.52291854}, {0.15454421, 0.38722991, 0.52101815},
    {0.15627225, 0.39056998, 0.5191937},  {0.15802555, 0.39389087, 0.5174364},
    {0.15979549, 0.39719482, 0.51574311}, {0.16157425, 0.40048375, 0.51411214},
    {0.16335571, 0.40375871, 0.51254622}, {0.16513234, 0.40702178, 0.51104174},
    {0.1668964, 0.41027528, 0.50959299},  {0.16864151, 0.41352084, 0.50819797},
    {0.17036277, 0.41675941, 0.50685814}, {0.1720542, 0.41999269, 0.50557008},
    {0.17370932, 0.42322271, 0.50432818}, {0.17532301, 0.42645082, 0.50313007},
    {0.17689176, 0.42967776, 0.50197686}, {0.17841013, 0.43290523, 0.5008633},
    {0.17987314, 0.43613477, 0.49978492}, {0.18127676, 0.43936752, 0.49873901},
    {0.18261885, 0.44260392, 0.49772638}, {0.18389409, 0.44584578, 0.49673978},
    {0.18509911, 0.44909409, 0.49577605}, {0.18623135, 0.4523496, 0.494833},
    {0.18728844, 0.45561305, 0.49390803}, {0.18826671, 0.45888565, 0.49299567},
    {0.18916393, 0.46216809, 0.49209268}, {0.18997879, 0.46546084, 0.49119678},
    {0.19070881, 0.46876472, 0.49030328}, {0.19135221, 0.47208035, 0.48940827},
    {0.19190791, 0.47540815, 0.48850845}, {0.19237491, 0.47874852, 0.4876002},
    {0.19275204, 0.48210192, 0.48667935}, {0.19303899, 0.48546858, 0.48574251},
    {0.19323526, 0.48884877, 0.48478573}, {0.19334062, 0.49224271, 0.48380506},
    {0.19335574, 0.49565037, 0.4827974},  {0.19328143, 0.49907173, 0.48175948},
    {0.19311664, 0.50250719, 0.48068559}, {0.192864, 0.50595628, 0.47957408},
    {0.19252521, 0.50941877, 0.47842186}, {0.19210087, 0.51289469, 0.47722441},
    {0.19159194, 0.516384, 0.47597744},   {0.19100267, 0.51988593, 0.47467988},
    {0.19033595, 0.52340005, 0.47332894}, {0.18959113, 0.5269267, 0.47191795},
    {0.18877336, 0.530465, 0.47044603},   {0.18788765, 0.53401416, 0.46891178},
    {0.18693822, 0.53757359, 0.46731272}, {0.18592276, 0.54114404, 0.46563962},
    {0.18485204, 0.54472367, 0.46389595}, {0.18373148, 0.5483118, 0.46207951},
    {0.18256585, 0.55190791, 0.4601871},  {0.18135481, 0.55551253, 0.45821002},
    {0.18011172, 0.55912361, 0.45615277}, {0.17884392, 0.56274038, 0.45401341},
    {0.17755858, 0.56636217, 0.45178933}, {0.17625543, 0.56998972, 0.44946971},
    {0.174952, 0.57362064, 0.44706119},   {0.17365805, 0.57725408, 0.44456198},
    {0.17238403, 0.58088916, 0.4419703},  {0.17113321, 0.58452637, 0.43927576},
    {0.1699221, 0.58816399, 0.43648119},  {0.1687662, 0.5918006, 0.43358772},
    {0.16767908, 0.59543526, 0.43059358}, {0.16667511, 0.59906699, 0.42749697},
    {0.16575939, 0.60269653, 0.42428344}, {0.16495764, 0.6063212, 0.42096245},
    {0.16428695, 0.60993988, 0.41753246}, {0.16376481, 0.61355147, 0.41399151},
    {0.16340924, 0.61715487, 0.41033757}, {0.16323549, 0.62074951, 0.40656329},
    {0.16326148, 0.62433443, 0.40266378}, {0.16351136, 0.62790748, 0.39864431},
    {0.16400433, 0.63146734, 0.39450263}, {0.16475937, 0.63501264, 0.39023638},
    {0.16579502, 0.63854196, 0.38584309}, {0.16712921, 0.64205381, 0.38132023},
    {0.168779, 0.64554661, 0.37666513},   {0.17075915, 0.64901912, 0.37186962},
    {0.17308572, 0.65246934, 0.36693299}, {0.1757732, 0.65589512, 0.36185643},
    {0.17883344, 0.65929449, 0.3566372},  {0.18227669, 0.66266536, 0.35127251},
    {0.18611159, 0.66600553, 0.34575959}, {0.19034516, 0.66931265, 0.34009571},
    {0.19498285, 0.67258423, 0.3342782},  {0.20002863, 0.67581761, 0.32830456},
    {0.20548509, 0.67900997, 0.3221725},  {0.21135348, 0.68215834, 0.31587999},
    {0.2176339, 0.68525954, 0.30942543},  {0.22432532, 0.68831023, 0.30280771},
    {0.23142568, 0.69130688, 0.29602636}, {0.23893914, 0.69424565, 0.28906643},
    {0.2468574, 0.69712255, 0.28194103},  {0.25517514, 0.69993351, 0.27465372},
    {0.26388625, 0.70267437, 0.26720869}, {0.27298333, 0.70534087, 0.25961196},
    {0.28246016, 0.70792854, 0.25186761}, {0.29232159, 0.71043184, 0.2439642},
    {0.30253943, 0.71284765, 0.23594089}, {0.31309875, 0.71517209, 0.22781515},
    {0.32399522, 0.71740028, 0.21959115}, {0.33520729, 0.71952906, 0.21129816},
    {0.3467003, 0.72155723, 0.20298257},  {0.35846225, 0.72348143, 0.19466318},
    {0.3704552, 0.72530195, 0.18639333},  {0.38264126, 0.72702007, 0.17822762},
    {0.39499483, 0.72863609, 0.17020921}, {0.40746591, 0.73015499, 0.1624122},
    {0.42001969, 0.73158058, 0.15489659}, {0.43261504, 0.73291878, 0.14773267},
    {0.44521378, 0.73417623, 0.14099043}, {0.45777768, 0.73536072, 0.13474173},
    {0.47028295, 0.73647823, 0.1290455},  {0.48268544, 0.73753985, 0.12397794},
    {0.49497773, 0.73854983, 0.11957878}, {0.5071369, 0.73951621, 0.11589589},
    {0.51913764, 0.74044827, 0.11296861}, {0.53098624, 0.74134823, 0.11080237},
    {0.5426701, 0.74222288, 0.10940411},  {0.55417235, 0.74308049, 0.10876749},
    {0.56550904, 0.74392086, 0.10885609}, {0.57667994, 0.74474781, 0.10963233},
    {0.58767906, 0.74556676, 0.11105089}, {0.59850723, 0.74638125, 0.1130567},
    {0.609179, 0.74719067, 0.11558918},   {0.61969877, 0.74799703, 0.11859042},
    {0.63007148, 0.74880206, 0.12200388}, {0.64030249, 0.74960714, 0.12577596},
    {0.65038997, 0.75041586, 0.12985641}, {0.66034774, 0.75122659, 0.1342004},
    {0.67018264, 0.75203968, 0.13876817}, {0.67990043, 0.75285567, 0.14352456},
    {0.68950682, 0.75367492, 0.14843886}, {0.69900745, 0.75449768, 0.15348445},
    {0.70840781, 0.75532408, 0.15863839}, {0.71771325, 0.75615416, 0.16388098},
    {0.72692898, 0.75698787, 0.1691954},  {0.73606001, 0.75782508, 0.17456729},
    {0.74511119, 0.75866562, 0.17998443}, {0.75408719, 0.75950924, 0.18543644},
    {0.76299247, 0.76035568, 0.19091446}, {0.77183123, 0.76120466, 0.19641095},
    {0.78060815, 0.76205561, 0.20191973}, {0.78932717, 0.76290815, 0.20743538},
    {0.79799213, 0.76376186, 0.21295324}, {0.8066067, 0.76461631, 0.21846931},
    {0.81517444, 0.76547101, 0.22398014}, {0.82369877, 0.76632547, 0.2294827},
    {0.832183, 0.7671792, 0.2349743},     {0.8406303, 0.76803167, 0.24045248},
    {0.84904371, 0.76888236, 0.24591492}, {0.85742615, 0.76973076, 0.25135935},
    {0.86578037, 0.77057636, 0.25678342}, {0.87410891, 0.77141875, 0.2621846},
    {0.88241406, 0.77225757, 0.26755999}, {0.89070781, 0.77308772, 0.27291122},
    {0.89898836, 0.77391069, 0.27823228}, {0.90725475, 0.77472764, 0.28351668},
    {0.91550775, 0.77553893, 0.28875751}, {0.92375722, 0.7763404, 0.29395046},
    {0.9320227, 0.77712286, 0.29909267},  {0.94027715, 0.7779011, 0.30415428},
    {0.94856742, 0.77865213, 0.3091325},  {0.95686038, 0.7793949, 0.31397459},
    {0.965222, 0.7800975, 0.31864342},    {0.97365189, 0.78076521, 0.32301107},
    {0.98227405, 0.78134549, 0.32678728}, {0.99136564, 0.78176999, 0.3281624},
    {0.99505988, 0.78542889, 0.32106514}, {0.99594185, 0.79046888, 0.31648808},
    {0.99646635, 0.79566972, 0.31244662}, {0.99681528, 0.80094905, 0.30858532},
    {0.9970578, 0.80627441, 0.30479247},  {0.99724883, 0.81161757, 0.30105328},
    {0.99736711, 0.81699344, 0.29725528}, {0.99742254, 0.82239736, 0.29337235},
    {0.99744736, 0.82781159, 0.28943391}, {0.99744951, 0.83323244, 0.28543062},
    {0.9973953, 0.83867931, 0.2812767},   {0.99727248, 0.84415897, 0.27692897},
    {0.99713953, 0.84963903, 0.27248698}, {0.99698641, 0.85512544, 0.26791703},
    {0.99673736, 0.86065927, 0.26304767}, {0.99652358, 0.86616957, 0.25813608},
    {0.99622774, 0.87171946, 0.25292044}, {0.99590494, 0.87727931, 0.24750009},
    {0.99555225, 0.88285068, 0.2418514},  {0.99513763, 0.8884501, 0.23588062},
    {0.99471252, 0.89405076, 0.2296837},  {0.99421873, 0.89968246, 0.2230963},
    {0.99370185, 0.90532165, 0.21619768}, {0.99313786, 0.91098038, 0.2088926},
    {0.99250707, 0.91666811, 0.20108214}, {0.99187888, 0.92235023, 0.19290417},
    {0.99110991, 0.92809686, 0.18387963}, {0.99042108, 0.93379995, 0.17458127},
    {0.98958484, 0.93956962, 0.16420166}, {0.98873988, 0.94533859, 0.15303117},
    {0.98784836, 0.95112482, 0.14074826}, {0.98680727, 0.95697596, 0.12661626}};

const int magma_n = 256;
const float magma[magma_n][3] = {
    {0.001462, 0.000466, 0.013866}, {0.002258, 0.001295, 0.018331},
    {0.003279, 0.002305, 0.023708}, {0.004512, 0.003490, 0.029965},
    {0.005950, 0.004843, 0.037130}, {0.007588, 0.006356, 0.044973},
    {0.009426, 0.008022, 0.052844}, {0.011465, 0.009828, 0.060750},
    {0.013708, 0.011771, 0.068667}, {0.016156, 0.013840, 0.076603},
    {0.018815, 0.016026, 0.084584}, {0.021692, 0.018320, 0.092610},
    {0.024792, 0.020715, 0.100676}, {0.028123, 0.023201, 0.108787},
    {0.031696, 0.025765, 0.116965}, {0.035520, 0.028397, 0.125209},
    {0.039608, 0.031090, 0.133515}, {0.043830, 0.033830, 0.141886},
    {0.048062, 0.036607, 0.150327}, {0.052320, 0.039407, 0.158841},
    {0.056615, 0.042160, 0.167446}, {0.060949, 0.044794, 0.176129},
    {0.065330, 0.047318, 0.184892}, {0.069764, 0.049726, 0.193735},
    {0.074257, 0.052017, 0.202660}, {0.078815, 0.054184, 0.211667},
    {0.083446, 0.056225, 0.220755}, {0.088155, 0.058133, 0.229922},
    {0.092949, 0.059904, 0.239164}, {0.097833, 0.061531, 0.248477},
    {0.102815, 0.063010, 0.257854}, {0.107899, 0.064335, 0.267289},
    {0.113094, 0.065492, 0.276784}, {0.118405, 0.066479, 0.286321},
    {0.123833, 0.067295, 0.295879}, {0.129380, 0.067935, 0.305443},
    {0.135053, 0.068391, 0.315000}, {0.140858, 0.068654, 0.324538},
    {0.146785, 0.068738, 0.334011}, {0.152839, 0.068637, 0.343404},
    {0.159018, 0.068354, 0.352688}, {0.165308, 0.067911, 0.361816},
    {0.171713, 0.067305, 0.370771}, {0.178212, 0.066576, 0.379497},
    {0.184801, 0.065732, 0.387973}, {0.191460, 0.064818, 0.396152},
    {0.198177, 0.063862, 0.404009}, {0.204935, 0.062907, 0.411514},
    {0.211718, 0.061992, 0.418647}, {0.218512, 0.061158, 0.425392},
    {0.225302, 0.060445, 0.431742}, {0.232077, 0.059889, 0.437695},
    {0.238826, 0.059517, 0.443256}, {0.245543, 0.059352, 0.448436},
    {0.252220, 0.059415, 0.453248}, {0.258857, 0.059706, 0.457710},
    {0.265447, 0.060237, 0.461840}, {0.271994, 0.060994, 0.465660},
    {0.278493, 0.061978, 0.469190}, {0.284951, 0.063168, 0.472451},
    {0.291366, 0.064553, 0.475462}, {0.297740, 0.066117, 0.478243},
    {0.304081, 0.067835, 0.480812}, {0.310382, 0.069702, 0.483186},
    {0.316654, 0.071690, 0.485380}, {0.322899, 0.073782, 0.487408},
    {0.329114, 0.075972, 0.489287}, {0.335308, 0.078236, 0.491024},
    {0.341482, 0.080564, 0.492631}, {0.347636, 0.082946, 0.494121},
    {0.353773, 0.085373, 0.495501}, {0.359898, 0.087831, 0.496778},
    {0.366012, 0.090314, 0.497960}, {0.372116, 0.092816, 0.499053},
    {0.378211, 0.095332, 0.500067}, {0.384299, 0.097855, 0.501002},
    {0.390384, 0.100379, 0.501864}, {0.396467, 0.102902, 0.502658},
    {0.402548, 0.105420, 0.503386}, {0.408629, 0.107930, 0.504052},
    {0.414709, 0.110431, 0.504662}, {0.420791, 0.112920, 0.505215},
    {0.426877, 0.115395, 0.505714}, {0.432967, 0.117855, 0.506160},
    {0.439062, 0.120298, 0.506555}, {0.445163, 0.122724, 0.506901},
    {0.451271, 0.125132, 0.507198}, {0.457386, 0.127522, 0.507448},
    {0.463508, 0.129893, 0.507652}, {0.469640, 0.132245, 0.507809},
    {0.475780, 0.134577, 0.507921}, {0.481929, 0.136891, 0.507989},
    {0.488088, 0.139186, 0.508011}, {0.494258, 0.141462, 0.507988},
    {0.500438, 0.143719, 0.507920}, {0.506629, 0.145958, 0.507806},
    {0.512831, 0.148179, 0.507648}, {0.519045, 0.150383, 0.507443},
    {0.525270, 0.152569, 0.507192}, {0.531507, 0.154739, 0.506895},
    {0.537755, 0.156894, 0.506551}, {0.544015, 0.159033, 0.506159},
    {0.550287, 0.161158, 0.505719}, {0.556571, 0.163269, 0.505230},
    {0.562866, 0.165368, 0.504692}, {0.569172, 0.167454, 0.504105},
    {0.575490, 0.169530, 0.503466}, {0.581819, 0.171596, 0.502777},
    {0.588158, 0.173652, 0.502035}, {0.594508, 0.175701, 0.501241},
    {0.600868, 0.177743, 0.500394}, {0.607238, 0.179779, 0.499492},
    {0.613617, 0.181811, 0.498536}, {0.620005, 0.183840, 0.497524},
    {0.626401, 0.185867, 0.496456}, {0.632805, 0.187893, 0.495332},
    {0.639216, 0.189921, 0.494150}, {0.645633, 0.191952, 0.492910},
    {0.652056, 0.193986, 0.491611}, {0.658483, 0.196027, 0.490253},
    {0.664915, 0.198075, 0.488836}, {0.671349, 0.200133, 0.487358},
    {0.677786, 0.202203, 0.485819}, {0.684224, 0.204286, 0.484219},
    {0.690661, 0.206384, 0.482558}, {0.697098, 0.208501, 0.480835},
    {0.703532, 0.210638, 0.479049}, {0.709962, 0.212797, 0.477201},
    {0.716387, 0.214982, 0.475290}, {0.722805, 0.217194, 0.473316},
    {0.729216, 0.219437, 0.471279}, {0.735616, 0.221713, 0.469180},
    {0.742004, 0.224025, 0.467018}, {0.748378, 0.226377, 0.464794},
    {0.754737, 0.228772, 0.462509}, {0.761077, 0.231214, 0.460162},
    {0.767398, 0.233705, 0.457755}, {0.773695, 0.236249, 0.455289},
    {0.779968, 0.238851, 0.452765}, {0.786212, 0.241514, 0.450184},
    {0.792427, 0.244242, 0.447543}, {0.798608, 0.247040, 0.444848},
    {0.804752, 0.249911, 0.442102}, {0.810855, 0.252861, 0.439305},
    {0.816914, 0.255895, 0.436461}, {0.822926, 0.259016, 0.433573},
    {0.828886, 0.262229, 0.430644}, {0.834791, 0.265540, 0.427671},
    {0.840636, 0.268953, 0.424666}, {0.846416, 0.272473, 0.421631},
    {0.852126, 0.276106, 0.418573}, {0.857763, 0.279857, 0.415496},
    {0.863320, 0.283729, 0.412403}, {0.868793, 0.287728, 0.409303},
    {0.874176, 0.291859, 0.406205}, {0.879464, 0.296125, 0.403118},
    {0.884651, 0.300530, 0.400047}, {0.889731, 0.305079, 0.397002},
    {0.894700, 0.309773, 0.393995}, {0.899552, 0.314616, 0.391037},
    {0.904281, 0.319610, 0.388137}, {0.908884, 0.324755, 0.385308},
    {0.913354, 0.330052, 0.382563}, {0.917689, 0.335500, 0.379915},
    {0.921884, 0.341098, 0.377376}, {0.925937, 0.346844, 0.374959},
    {0.929845, 0.352734, 0.372677}, {0.933606, 0.358764, 0.370541},
    {0.937221, 0.364929, 0.368567}, {0.940687, 0.371224, 0.366762},
    {0.944006, 0.377643, 0.365136}, {0.947180, 0.384178, 0.363701},
    {0.950210, 0.390820, 0.362468}, {0.953099, 0.397563, 0.361438},
    {0.955849, 0.404400, 0.360619}, {0.958464, 0.411324, 0.360014},
    {0.960949, 0.418323, 0.359630}, {0.963310, 0.425390, 0.359469},
    {0.965549, 0.432519, 0.359529}, {0.967671, 0.439703, 0.359810},
    {0.969680, 0.446936, 0.360311}, {0.971582, 0.454210, 0.361030},
    {0.973381, 0.461520, 0.361965}, {0.975082, 0.468861, 0.363111},
    {0.976690, 0.476226, 0.364466}, {0.978210, 0.483612, 0.366025},
    {0.979645, 0.491014, 0.367783}, {0.981000, 0.498428, 0.369734},
    {0.982279, 0.505851, 0.371874}, {0.983485, 0.513280, 0.374198},
    {0.984622, 0.520713, 0.376698}, {0.985693, 0.528148, 0.379371},
    {0.986700, 0.535582, 0.382210}, {0.987646, 0.543015, 0.385210},
    {0.988533, 0.550446, 0.388365}, {0.989363, 0.557873, 0.391671},
    {0.990138, 0.565296, 0.395122}, {0.990871, 0.572706, 0.398714},
    {0.991558, 0.580107, 0.402441}, {0.992196, 0.587502, 0.406299},
    {0.992785, 0.594891, 0.410283}, {0.993326, 0.602275, 0.414390},
    {0.993834, 0.609644, 0.418613}, {0.994309, 0.616999, 0.422950},
    {0.994738, 0.624350, 0.427397}, {0.995122, 0.631696, 0.431951},
    {0.995480, 0.639027, 0.436607}, {0.995810, 0.646344, 0.441361},
    {0.996096, 0.653659, 0.446213}, {0.996341, 0.660969, 0.451160},
    {0.996580, 0.668256, 0.456192}, {0.996775, 0.675541, 0.461314},
    {0.996925, 0.682828, 0.466526}, {0.997077, 0.690088, 0.471811},
    {0.997186, 0.697349, 0.477182}, {0.997254, 0.704611, 0.482635},
    {0.997325, 0.711848, 0.488154}, {0.997351, 0.719089, 0.493755},
    {0.997351, 0.726324, 0.499428}, {0.997341, 0.733545, 0.505167},
    {0.997285, 0.740772, 0.510983}, {0.997228, 0.747981, 0.516859},
    {0.997138, 0.755190, 0.522806}, {0.997019, 0.762398, 0.528821},
    {0.996898, 0.769591, 0.534892}, {0.996727, 0.776795, 0.541039},
    {0.996571, 0.783977, 0.547233}, {0.996369, 0.791167, 0.553499},
    {0.996162, 0.798348, 0.559820}, {0.995932, 0.805527, 0.566202},
    {0.995680, 0.812706, 0.572645}, {0.995424, 0.819875, 0.579140},
    {0.995131, 0.827052, 0.585701}, {0.994851, 0.834213, 0.592307},
    {0.994524, 0.841387, 0.598983}, {0.994222, 0.848540, 0.605696},
    {0.993866, 0.855711, 0.612482}, {0.993545, 0.862859, 0.619299},
    {0.993170, 0.870024, 0.626189}, {0.992831, 0.877168, 0.633109},
    {0.992440, 0.884330, 0.640099}, {0.992089, 0.891470, 0.647116},
    {0.991688, 0.898627, 0.654202}, {0.991332, 0.905763, 0.661309},
    {0.990930, 0.912915, 0.668481}, {0.990570, 0.920049, 0.675675},
    {0.990175, 0.927196, 0.682926}, {0.989815, 0.934329, 0.690198},
    {0.989434, 0.941470, 0.697519}, {0.989077, 0.948604, 0.704863},
    {0.988717, 0.955742, 0.712242}, {0.988367, 0.962878, 0.719649},
    {0.988033, 0.970012, 0.727077}, {0.987691, 0.977154, 0.734536},
    {0.987387, 0.984288, 0.742002}, {0.987053, 0.991438, 0.749504}};

// The following colormap is licensed CC-BY:
// https://github.com/bokeh/colorcet/blob/master/LICENSE.txt
const int rainbow_n = 256;
const float rainbow[rainbow_n][3] = {
    //{0.97561, 0.52012, 0.97096},
    {0.00000, 0.00000, 0.00000},  {0.98033, 0.51722, 0.96319},
    {0.9842, 0.51357, 0.95448},   {0.98725, 0.50922, 0.94488},
    {0.98954, 0.5042, 0.93442},   {0.99112, 0.49856, 0.9232},
    {0.99204, 0.49233, 0.91126},  {0.99239, 0.48561, 0.89871},
    {0.99221, 0.47844, 0.88563},  {0.99158, 0.47088, 0.87209},
    {0.99055, 0.46298, 0.85819},  {0.98919, 0.45483, 0.84399},
    {0.98754, 0.44642, 0.82958},  {0.98565, 0.43783, 0.81499},
    {0.98354, 0.42907, 0.80029},  {0.98125, 0.42019, 0.78551},
    {0.97879, 0.4112, 0.77068},   {0.97618, 0.40212, 0.75583},
    {0.97344, 0.39297, 0.74098},  {0.97057, 0.38376, 0.72614},
    {0.96757, 0.3745, 0.71131},   {0.96444, 0.36519, 0.6965},
    {0.96118, 0.35586, 0.6817},   {0.95779, 0.3465, 0.66694},
    {0.95425, 0.33716, 0.65219},  {0.95055, 0.3278, 0.63745},
    {0.94668, 0.31849, 0.62271},  {0.94264, 0.30923, 0.60798},
    {0.93839, 0.3, 0.59322},      {0.93394, 0.29087, 0.57844},
    {0.92929, 0.28185, 0.56366},  {0.92441, 0.27294, 0.54883},
    {0.91931, 0.26418, 0.53396},  {0.91398, 0.25557, 0.51908},
    {0.90842, 0.24712, 0.50415},  {0.90264, 0.23883, 0.48918},
    {0.89665, 0.23073, 0.47419},  {0.89044, 0.22281, 0.45918},
    {0.88405, 0.21501, 0.44415},  {0.87747, 0.2074, 0.42911},
    {0.87072, 0.19987, 0.41407},  {0.86383, 0.1925, 0.39903},
    {0.85679, 0.18523, 0.38401},  {0.84962, 0.17801, 0.369},
    {0.84235, 0.17082, 0.35401},  {0.83498, 0.16373, 0.33907},
    {0.82753, 0.15664, 0.32416},  {0.82001, 0.14962, 0.30933},
    {0.81245, 0.14261, 0.29452},  {0.80486, 0.13567, 0.27982},
    {0.79725, 0.12885, 0.26518},  {0.78966, 0.12217, 0.25066},
    {0.78212, 0.11578, 0.23628},  {0.77464, 0.1097, 0.22201},
    {0.7673, 0.104, 0.20795},     {0.76012, 0.098945, 0.19412},
    {0.75317, 0.094721, 0.18049}, {0.74652, 0.091421, 0.16723},
    {0.74022, 0.089258, 0.15426}, {0.73434, 0.088445, 0.14174},
    {0.72894, 0.089069, 0.12963}, {0.7241, 0.091195, 0.118},
    {0.71988, 0.094767, 0.10689}, {0.71631, 0.099636, 0.096236},
    {0.71343, 0.1058, 0.086225},  {0.71128, 0.11302, 0.076774},
    {0.70983, 0.12104, 0.068001}, {0.7091, 0.12989, 0.05981},
    {0.70904, 0.1392, 0.052084},  {0.70963, 0.14902, 0.04517},
    {0.71081, 0.15914, 0.038855}, {0.71251, 0.1695, 0.033292},
    {0.7147, 0.17995, 0.028947},  {0.71729, 0.1905, 0.02547},
    {0.72021, 0.20107, 0.022733}, {0.72342, 0.21166, 0.020622},
    {0.72685, 0.22214, 0.019034}, {0.73046, 0.23256, 0.017876},
    {0.73419, 0.24288, 0.017071}, {0.73802, 0.25311, 0.016547},
    {0.74191, 0.26323, 0.016249}, {0.74585, 0.27322, 0.016125},
    {0.74979, 0.28311, 0.016137}, {0.75375, 0.29288, 0.01625},
    {0.75769, 0.30257, 0.01644},  {0.76161, 0.31217, 0.016684},
    {0.7655, 0.32171, 0.016989},  {0.76932, 0.33117, 0.017296},
    {0.7731, 0.34058, 0.0176},    {0.77681, 0.34994, 0.017896},
    {0.78044, 0.35925, 0.018177}, {0.784, 0.36855, 0.018435},
    {0.78746, 0.37783, 0.018665}, {0.79082, 0.38709, 0.018861},
    {0.79409, 0.39636, 0.019014}, {0.79724, 0.40564, 0.019122},
    {0.80029, 0.4149, 0.019179},  {0.80322, 0.42418, 0.019183},
    {0.80605, 0.43346, 0.019132}, {0.80876, 0.44276, 0.019026},
    {0.81136, 0.45205, 0.018866}, {0.81386, 0.46134, 0.018654},
    {0.81626, 0.47063, 0.018394}, {0.81857, 0.47992, 0.01809},
    {0.8208, 0.48918, 0.017747},  {0.82295, 0.49846, 0.017369},
    {0.82503, 0.50771, 0.016963}, {0.82704, 0.51694, 0.016575},
    {0.82898, 0.52615, 0.016225}, {0.83084, 0.53532, 0.015949},
    {0.83262, 0.54446, 0.015792}, {0.83431, 0.55354, 0.01582},
    {0.8359, 0.56257, 0.016118},  {0.83738, 0.5715, 0.016798},
    {0.8387, 0.58035, 0.018004},  {0.83985, 0.58906, 0.019918},
    {0.84077, 0.59761, 0.022763}, {0.84143, 0.60595, 0.02681},
    {0.84177, 0.61404, 0.032376}, {0.84173, 0.62182, 0.040011},
    {0.84125, 0.62922, 0.04912},  {0.84026, 0.63619, 0.059305},
    {0.83868, 0.64264, 0.070471}, {0.83647, 0.6485, 0.08264},
    {0.83356, 0.65372, 0.095596}, {0.82989, 0.65824, 0.10926},
    {0.82544, 0.66201, 0.12343},  {0.82017, 0.66498, 0.13819},
    {0.81408, 0.66715, 0.15321},  {0.80717, 0.66852, 0.16856},
    {0.79947, 0.66908, 0.18405},  {0.79098, 0.66887, 0.19961},
    {0.78178, 0.66795, 0.2152},   {0.7719, 0.66635, 0.23072},
    {0.76139, 0.66416, 0.2461},   {0.75032, 0.66143, 0.26133},
    {0.73873, 0.65825, 0.27636},  {0.72668, 0.65467, 0.29113},
    {0.71421, 0.65077, 0.30567},  {0.70137, 0.64662, 0.31995},
    {0.68818, 0.64226, 0.33397},  {0.67466, 0.63773, 0.34774},
    {0.66084, 0.6331, 0.36127},   {0.64671, 0.62838, 0.37458},
    {0.63228, 0.6236, 0.38765},   {0.61753, 0.61878, 0.40056},
    {0.60245, 0.61393, 0.41326},  {0.58703, 0.60909, 0.42578},
    {0.57126, 0.60423, 0.43817},  {0.55511, 0.59936, 0.4504},
    {0.53858, 0.59449, 0.4625},   {0.5216, 0.58962, 0.47451},
    {0.5042, 0.58475, 0.4864},    {0.48632, 0.57986, 0.49821},
    {0.46796, 0.57493, 0.50993},  {0.44912, 0.56996, 0.5216},
    {0.42978, 0.56493, 0.53322},  {0.40998, 0.55983, 0.5448},
    {0.38972, 0.55461, 0.55635},  {0.36908, 0.54926, 0.56789},
    {0.3481, 0.54375, 0.57943},   {0.32688, 0.53805, 0.59098},
    {0.30556, 0.53211, 0.60256},  {0.28424, 0.52592, 0.61416},
    {0.26316, 0.51945, 0.62583},  {0.2425, 0.51265, 0.63755},
    {0.22257, 0.50551, 0.64934},  {0.20368, 0.49802, 0.66119},
    {0.18619, 0.49012, 0.67313},  {0.17051, 0.48183, 0.68514},
    {0.15712, 0.47312, 0.69723},  {0.14638, 0.46402, 0.70941},
    {0.13859, 0.4545, 0.72164},   {0.1338, 0.44458, 0.73395},
    {0.1319, 0.43426, 0.7463},    {0.13253, 0.42359, 0.75869},
    {0.13519, 0.4126, 0.77109},   {0.1393, 0.40128, 0.7835},
    {0.1445, 0.38969, 0.79588},   {0.15024, 0.3779, 0.80821},
    {0.1563, 0.36594, 0.82045},   {0.16246, 0.35387, 0.83257},
    {0.16864, 0.34179, 0.84452},  {0.17484, 0.32979, 0.85623},
    {0.18105, 0.31794, 0.86767},  {0.18746, 0.30639, 0.87875},
    {0.19408, 0.29524, 0.88943},  {0.20101, 0.28465, 0.89962},
    {0.20848, 0.27478, 0.90926},  {0.2165, 0.26579, 0.9183},
    {0.22506, 0.25778, 0.92668},  {0.2343, 0.25098, 0.93436},
    {0.24409, 0.24544, 0.94131},  {0.25448, 0.24134, 0.94753},
    {0.26529, 0.23866, 0.95301},  {0.27652, 0.2375, 0.95778},
    {0.28798, 0.23773, 0.96185},  {0.29964, 0.23933, 0.9653},
    {0.31135, 0.24218, 0.96816},  {0.32305, 0.24613, 0.9705},
    {0.33464, 0.25106, 0.97238},  {0.34606, 0.25676, 0.97386},
    {0.35733, 0.26313, 0.97502},  {0.36835, 0.27, 0.9759},
    {0.37916, 0.27724, 0.97657},  {0.38973, 0.28476, 0.97706},
    {0.40009, 0.2925, 0.97742},   {0.41026, 0.30036, 0.97768},
    {0.42023, 0.3083, 0.97787},   {0.43006, 0.31627, 0.978},
    {0.43977, 0.32421, 0.97811},  {0.4494, 0.33213, 0.9782},
    {0.459, 0.33997, 0.97829},    {0.46859, 0.34772, 0.97838},
    {0.47825, 0.35536, 0.97849},  {0.48802, 0.36282, 0.97864},
    {0.49795, 0.37015, 0.97883},  {0.50807, 0.3773, 0.97906},
    {0.51845, 0.38426, 0.97935},  {0.52912, 0.39102, 0.97969},
    {0.5401, 0.39755, 0.9801},    {0.55143, 0.40386, 0.98057},
    {0.56311, 0.40995, 0.98111},  {0.57513, 0.41579, 0.98173},
    {0.58751, 0.4214, 0.98242},   {0.60022, 0.42681, 0.98317},
    {0.61322, 0.43201, 0.984},    {0.6265, 0.437, 0.98489},
    {0.64002, 0.44182, 0.98583},  {0.65371, 0.44647, 0.98682},
    {0.66757, 0.45099, 0.98786},  {0.68153, 0.4554, 0.98894},
    {0.69558, 0.4597, 0.99005},   {0.70967, 0.46392, 0.99118},
    {0.72376, 0.46807, 0.99233},  {0.73785, 0.47218, 0.9935},
    {0.7519, 0.47624, 0.99467},   {0.76589, 0.48026, 0.99582},
    {0.77979, 0.48425, 0.99696},  {0.79361, 0.48821, 0.99807},
    {0.80729, 0.49211, 0.99913},  {0.82083, 0.49595, 1},
    {0.8342, 0.49972, 1},         {0.84736, 0.50339, 1},
    {0.86029, 0.50693, 1},        {0.87292, 0.5103, 1},
    {0.8852, 0.51345, 1},         {0.89709, 0.51632, 1},
    {0.90851, 0.51889, 1},        {0.91939, 0.52104, 1},
    {0.92968, 0.52273, 0.99852},  {0.9393, 0.52391, 0.996},
    {0.94819, 0.5245, 0.99274},   {0.95631, 0.52446, 0.98864},
    {0.9636, 0.52374, 0.98368},   {0.97003, 0.52229, 0.97779},
};

const int tosqex_n = 256;
const float tosqex[tosqex_n][3] = {
    {0.29399223353675974, 0.43657095141515323, 0.8858346510005489},
    {0.27486227978538397, 0.4414749609362262, 0.88669360481216},
    {0.25770194697230064, 0.4466008074237426, 0.8841010629252203},
    {0.2553524772011007, 0.45242408282181606, 0.8683427184761454},
    {0.2532536067266236, 0.45769885749051115, 0.8540783000492562},
    {0.25136750811879466, 0.46252179163378987, 0.8411021227453085},
    {0.24966355001246104, 0.4669680414225143, 0.8292454696573595},
    {0.24811665583110898, 0.47109694889854997, 0.8183684890974305},
    {0.24670609364825968, 0.47495600921089715, 0.8083541600861462},
    {0.2454145702166156, 0.47858369655614513, 0.7991037298005703},
    {0.24422754330964114, 0.4820115155565175, 0.7905332166828463},
    {0.24313269320817876, 0.4852655156490064, 0.782570697074757},
    {0.24211951184982605, 0.48836742605451305, 0.7751541760731019},
    {0.24117898009948913, 0.49133551805205805, 0.7682298996011654},
    {0.24030331180041925, 0.4941852682227063, 0.7617510036173057},
    {0.23948574898589847, 0.49692987438355624, 0.7556764237172335},
    {0.23872039668021056, 0.4995806610923768, 0.749970007859293},
    {0.2380020886205128, 0.5021474013966363, 0.7445997889976033},
    {0.23732627733847023, 0.5046385743707853, 0.739537384677551},
    {0.23668894358754128, 0.5070615729338412, 0.7347574982367232},
    {0.23608652124955565, 0.5094228728127551, 0.7302375019210405},
    {0.2355158347142431, 0.5117281708818412, 0.7259570864989152},
    {0.23497404637564184, 0.5139824991721564, 0.7218979652080397},
    {0.23445861238534538, 0.5161903194068083, 0.7180436223652447},
    {0.23396724518390738, 0.5183556018400047, 0.7143790989009998},
    {0.23349788162722895, 0.5204818913618127, 0.7108908085855654},
    {0.2330486557553617, 0.5225723632079458, 0.7075663798958544},
    {0.2326178754323185, 0.524629870134878, 0.7043945194063971},
    {0.2322040022287647, 0.5266569825492586, 0.7013648933310392},
    {0.23180563403344567, 0.5286560227906911, 0.6984680244368192},
    {0.23142148997038442, 0.5306290945390958, 0.6956952020301986},
    {0.23105039727228566, 0.5325781081376216, 0.6930384031032002},
    {0.23069127981991233, 0.5345048024786561, 0.6904902230421496},
    {0.23034314810543882, 0.536410763985665, 0.6880438145592385},
    {0.23000509041718298, 0.538297443131224, 0.6856928337186673},
    {0.2296762650754165, 0.5401661688568636, 0.6834313921035874},
    {0.22935589357559744, 0.5420181611996054, 0.6812540143145928},
    {0.22904325451739072, 0.5438545423804408, 0.6791556001107187},
    {0.22873767821611118, 0.5456763465693015, 0.6771313906043035},
    {0.22843854190852958, 0.5474845285075207, 0.6751769380051644},
    {0.22814526547769542, 0.5492799711410388, 0.6732880784803416},
    {0.2278573076321766, 0.5510634923945424, 0.6714609077553562},
    {0.22757416248414086, 0.5528358511975191, 0.669691759133511},
    {0.22729535647834137, 0.5545977528571104, 0.6679771836527308},
    {0.2270204456305333, 0.5563498538591489, 0.6663139321360235},
    {0.22674901303935846, 0.5580927661673846, 0.6646989389229373},
    {0.2264806666404377, 0.5598270610812743, 0.6631293070961827},
    {0.2262150371754102, 0.5615532727045704, 0.6616022950406151},
    {0.22595177635212127, 0.5632719010699896, 0.6601153041916257},
    {0.22569055517510495, 0.5649834149593431, 0.658665867847102},
    {0.22543106242807387, 0.566688254453435, 0.6572516409319693},
    {0.22517300329232826, 0.5683868332417095, 0.6558703906171772},
    {0.22491609808690627, 0.5700795407178875, 0.6545199877062018},
    {0.22466008111795843, 0.5717667438846228, 0.6531983987118678},
    {0.2244046996262673, 0.5734487890874324, 0.6519036785548287},
    {0.2241497128231008, 0.5751260035957378, 0.6506339638224709},
    {0.22389489100567617, 0.576798697046785, 0.6493874665335612},
    {0.22364001474447448, 0.5784671627663731, 0.6481624683596648},
    {0.2233848741355013, 0.5801316789787577, 0.6469573152594185},
    {0.22312926811131512, 0.5817925099166972, 0.645770412486176},
    {0.22287300380529923, 0.5834499068414077, 0.6446002199334582},
    {0.2226158959642463, 0.5851041089811289, 0.6434452477860976},
    {0.22235776640480748, 0.5867553443960715, 0.6423040524480244},
    {0.22209844350982128, 0.588403830776692, 0.6411752327203403},
    {0.22183776176094033, 0.5900497761815273, 0.6400574262057288},
    {0.221575561304314, 0.5916933797201679, 0.638949305917355},
    {0.22131168754640868, 0.5933348321864003, 0.6378495770723086},
    {0.2210459907773279, 0.5949743166460345, 0.6367569740512841},
    {0.22077832581923262, 0.5966120089834978, 0.635670257507685},
    {0.22050855169770078, 0.5982480784108791, 0.6345882116106292},
    {0.22023653133404691, 0.5998826879427555, 0.6335096414074921},
    {0.21996213125681352, 0.6015159948398232, 0.6324333702926305},
    {0.2196852213307955, 0.6031481510240774, 0.6313582375698259},
    {0.21940567450211235, 0.604779303468031, 0.6302830960967597},
    {0.21912336655794867, 0.6064095945602516, 0.6292068100005198},
    {0.2188381758997306, 0.6080391624492851, 0.6281282524537005},
    {0.21854998332857511, 0.6096681413678654, 0.627046303501177},
    {0.21825867184197056, 0.6112966619391483, 0.6259598479280316},
    {0.2179641264407035, 0.6129248514665653, 0.6248677731594713},
    {0.2176662339451469, 0.6145528342087638, 0.6237689671838194},
    {0.2173648828200644, 0.6161807316409913, 0.6226623164898936},
    {0.21705996300717928, 0.6178086627041725, 0.621546704010204},
    {0.21675136576477094, 0.6194367440428411, 0.6204210070614743},
    {0.21643898351365326, 0.6210650902330057, 0.6192840952740227},
    {0.21612270968888397, 0.6226938140009551, 0.6181348285014583},
    {0.21580243859664883, 0.6243230264339436, 0.6169720547020555},
    {0.21547806527574187, 0.6259528371836386, 0.6157946077829829},
    {0.21514948536313733, 0.6275833546631655, 0.6146013053983177},
    {0.21481659496315808, 0.6292146862385328, 0.6133909466914653},
    {0.2144792905197594, 0.6308469384151879, 0.6121623099722139},
    {0.21413746869149053, 0.632480217020414, 0.6109141503181917},
    {0.213791026228694, 0.634114627382255, 0.6096451970899518},
    {0.2134398598525314, 0.635750274505623, 0.6083541513482641},
    {0.2130838661354188, 0.6373872632462321, 0.607039683161472},
    {0.21272294138249304, 0.6390256984829723, 0.6057004287899186},
    {0.2123569815137068, 0.6406656852893393, 0.6043349877335009},
    {0.2119858819461774, 0.6423073291045184, 0.6029419196273226},
    {0.21160953747640188, 0.6439507359047126, 0.6015197409691668},
    {0.21122784216197116, 0.6455960123753128, 0.6000669216611492},
    {0.21084068920238397, 0.6472432660845012, 0.5985818813463013},
    {0.2104479708185969, 0.6488926056588908, 0.59706298551909},
    {0.21004957813090086, 0.6505441409618048, 0.5955085413868445},
    {0.20964540103473167, 0.6521979832748217, 0.5939167934568188},
    {0.20923532807400874, 0.6538542454832206, 0.5922859188210375},
    {0.20881924631156695, 0.6555130422659841, 0.5906140221081854},
    {0.2083970411962494, 0.6571744902910415, 0.5888991300685222},
    {0.20796859642620164, 0.6588387084164606, 0.587139185754072},
    {0.2075337938078773, 0.6605058178983297, 0.5853320422521222},
    {0.20709251311026833, 0.6621759426061118, 0.5834754559252631},
    {0.20664463191379895, 0.6638492092462923, 0.5815670791057148},
    {0.20619002545334164, 0.6655257475951883, 0.5796044521854451},
    {0.20572856645473492, 0.667205690741847, 0.5775849950364329},
    {0.205260124964171, 0.6688891753420152, 0.5755059976872271},
    {0.20478456816975277, 0.6705763418842321, 0.5733646101725329},
    {0.20430176021449847, 0.6722673349691743, 0.5711578314617135},
    {0.2038115619999788, 0.6739623036034562, 0.5688824973595364},
    {0.20331383097974065, 0.6756614015091955, 0.5665352672580023},
    {0.20280842094158907, 0.6773647874507419, 0.5641126096012161},
    {0.2022951817777111, 0.6790726255800922, 0.5616107859056192},
    {0.2017739592415574, 0.6807850858026298, 0.5590258331549576},
    {0.20124459469030087, 0.6825023441649768, 0.556353544362429},
    {0.20070692481154778, 0.6842245832668953, 0.5535894470608186},
    {0.2001607813329258, 0.6859519926993456, 0.5507287794440268},
    {0.19960599071295865, 0.6876847695110065, 0.5477664638391099},
    {0.1990423738115562, 0.6894231187057633, 0.5446970771352202},
    {0.1984697455382592, 0.6911672537739183, 0.5415148177328604},
    {0.197887914476163, 0.6929173972601244, 0.5382134685012703},
    {0.1972966824792891, 0.6946737813713506, 0.5347863551406228},
    {0.19669584424090736, 0.6964366486284986, 0.5312262992353065},
    {0.19608518683004805, 0.6982062525656595, 0.5275255651501025},
    {0.19546448919317405, 0.6999828584814031, 0.5236757997564643},
    {0.19483352161762887, 0.7017667442469443, 0.5196679637733906},
    {0.19419204515311994, 0.7035582011765391, 0.5154922532562863},
    {0.1935398109870692, 0.7053575349660253, 0.5111380094540849},
    {0.19287655976918408, 0.7071650667060744, 0.5065936148618858},
    {0.19220202088008742, 0.7089811339774181, 0.5018463727993286},
    {0.1915159116382088, 0.7108060920361433, 0.496882367211577},
    {0.19081793643845726, 0.7126403150980397, 0.49168629857597884},
    {0.1901077858154222, 0.71448419773203, 0.48624129074247285},
    {0.18938513542293478, 0.7163381563738616, 0.4805286621551342},
    {0.18864964492078815, 0.7182026309725735, 0.47452765307671935},
    {0.18790095675828214, 0.7200780867837319, 0.4682150979976108},
    {0.18713869484286322, 0.7219650163251471, 0.46156502910878167},
    {0.18636246308059617, 0.7238639415127158, 0.4545481921930879},
    {0.18557184377344757, 0.725775415996248, 0.4471314499985976},
    {0.18476639585625554, 0.7277000277176726, 0.4392770392769526},
    {0.18394565295389967, 0.7296384017169258, 0.4309416349178414},
    {0.18310912123642042, 0.7315912032141446, 0.4220751559533347},
    {0.18225627704658262, 0.7335591410006463, 0.41261922033456006},
    {0.18138656427065236, 0.7355429711755852, 0.40250511276909495},
    {0.18049939141873364, 0.7375435012703118, 0.39165106302829855},
    {0.17959412837584743, 0.7395615948083815, 0.3799585240218236},
    {0.17867010277887269, 0.741598176356065, 0.36730695816117087},
    {0.17772659596727988, 0.7436542371262329, 0.3535463262232301},
    {0.17676283844708818, 0.745730841207876, 0.3384859009191705},
    {0.1757780047974154, 0.7478291325045023, 0.3218769284808857},
    {0.17477120793688475, 0.7499503424775531, 0.3033844077710059},
    {0.17374149265282193, 0.7520957988061793, 0.2825382447023023},
    {0.17268782827879, 0.754266935092671, 0.258641686665568},
    {0.17160910038521307, 0.7564653017641166, 0.23058003207259925},
    {0.170504101322488, 0.7586925783461764, 0.19635291928899778},
    {0.18537442612389976, 0.7598478462785203, 0.16958114434589372},
    {0.22144243436516386, 0.7591494459244545, 0.16900146730365279},
    {0.2514162855939114, 0.7584905190606709, 0.16841088587108433},
    {0.2773634391577701, 0.7578688572886286, 0.16780932130150972},
    {0.3004066779012676, 0.7572823796952591, 0.16719668664271742},
    {0.3212353477349906, 0.7567291228053848, 0.1665728869349941},
    {0.3403082766078328, 0.7562072314345495, 0.16593781936744903},
    {0.3579489236367691, 0.7557149503474739, 0.16529137339597816},
    {0.3743953534230532, 0.7552506166385297, 0.164633430825492},
    {0.3898287523990791, 0.7548126527603212, 0.16396386585881753},
    {0.4043907681914468, 0.7543995601349144, 0.16328254511412166},
    {0.41819459754308635, 0.7540099132896196, 0.16258932761244427},
    {0.4313323733186041, 0.7536423544656626, 0.1618840647366027},
    {0.44388025627926425, 0.7532955886537307, 0.16116660016239304},
    {0.45590204710438015, 0.7529683790153141, 0.1604367697628392},
    {0.4674518125040186, 0.752659542653119, 0.15969440148590197},
    {0.47857583562629863, 0.7523679466976513, 0.1589393152059399},
    {0.4893140918486875, 0.7520925046804495, 0.15817132254888175},
    {0.49970138393953906, 0.7518321731674256, 0.15739022669094646},
    {0.5097682280484042, 0.7515859486284102, 0.15659582213054288},
    {0.5195415543064248, 0.7513528645213392, 0.15578789443270996},
    {0.5290452673759829, 0.7511319885715865, 0.154966219945318},
    {0.5383006997381664, 0.7509224202287953, 0.1541305654860653},
    {0.5473269818017258, 0.7507232882851909, 0.15328068799899727},
    {0.5561413467747897, 0.7505337486408215, 0.15241633417915912},
    {0.5647593838381259, 0.7503529822024673, 0.15153724006370792},
    {0.5731952499577989, 0.7501801929041149, 0.15064313058758197},
    {0.5814618483171063, 0.7500146058379316, 0.1497337191015079},
    {0.5895709795895221, 0.749855465485585, 0.14880870684997585},
    {0.5975334709487686, 0.7497020340405876, 0.14786778240631443},
    {0.6053592867022978, 0.7495535898130645, 0.1469106210618187},
    {0.6130576236577057, 0.74940942570901, 0.1459368841654371},
    {0.6206369937287974, 0.7492688477766675, 0.144946218410101},
    {0.6281052958162594, 0.749131173813198, 0.14393825506136848},
    {0.635469878625814, 0.7489957320252496, 0.14291260912348197},
    {0.6427375957910725, 0.7488618597374589, 0.14186887843745138},
    {0.6499148544317966, 0.7487289021432627, 0.1408066427050398},
    {0.6570076580878106, 0.7485962110927263, 0.1397254624318621},
    {0.6640216448144934, 0.7484631439123554, 0.13862487778198263},
    {0.6709621211000617, 0.7483290622521075, 0.13750440733548128},
    {0.6778340921618075, 0.7481933309550164, 0.136363546739374},
    {0.6846422890936353, 0.7480553169450121, 0.13520176724112698},
    {0.6913911932670146, 0.7479143881286627, 0.13401851409259222},
    {0.6980850583290902, 0.747769912306673, 0.1328132048106923},
    {0.7047279300929395, 0.747621256091054, 0.13158522727931637},
    {0.711323664574102, 0.747467783823945, 0.1303339376748977},
    {0.7178759443930703, 0.7473088564940836, 0.12905865819571632},
    {0.7243882937343786, 0.74714383064694, 0.12775867457220588},
    {0.7308640920282525, 0.7469720572844962, 0.1264332333324169},
    {0.7373065864998241, 0.7467928807506166, 0.12508153879290465},
    {0.7437189037129985, 0.7466056375978714, 0.12370274974117582},
    {0.7501040602207698, 0.7464096554315843, 0.12229597577042495},
    {0.7564649724206015, 0.7462042517267439, 0.12086027322154116},
    {0.7628044657022275, 0.7459887326132619, 0.1193946406800668},
    {0.7691252829654391, 0.7457623916248785, 0.1178980139674424},
    {0.7754300925770473, 0.745524508406795, 0.11636926055574487},
    {0.7817214958288898, 0.7452743473768603, 0.11480717332326068},
    {0.7880020339524832, 0.7450111563348547, 0.1132104635536278},
    {0.7942741947404293, 0.7447341650140802, 0.11157775306402698},
    {0.8005404188199525, 0.7444425835691001, 0.109907565326792},
    {0.806803105619839, 0.7441356009930529, 0.10819831542303829},
    {0.8130646190684853, 0.743812383457497, 0.10644829863560185},
    {0.819327293057684, 0.7434720725672191, 0.1046556774496959},
    {0.8255934367041285, 0.7431137835218522, 0.10281846668181319},
    {0.8318653394383351, 0.7427366031755014, 0.10093451639752501},
    {0.8381452759487408, 0.7423395879848349, 0.0990014922036759},
    {0.8444355110070928, 0.7419217618353037, 0.09701685240573898},
    {0.850738304199882, 0.7414821137342218, 0.0949778213999718},
    {0.8570559145894383, 0.7410195953584569, 0.09288135851501991},
    {0.8633906053274261, 0.7405331184433243, 0.09072412131669186},
    {0.8697446482427855, 0.7400215519980456, 0.08850242212677908},
    {0.8761203284256909, 0.739483719331709, 0.08621217616049096},
    {0.8825199488288001, 0.7389183948721008, 0.08384883922454892},
    {0.888945834906969, 0.7383243007580254, 0.0814073322939535},
    {0.895400339316659, 0.7377001031837531, 0.07888194943295818},
    {0.901885846696537, 0.7370444084720263, 0.07626624434476076},
    {0.9084047785511745, 0.7363557588495729, 0.07355288917408118},
    {0.914959598260366, 0.7356326278962871, 0.07073349681486371},
    {0.9215528162373899, 0.734873415636087, 0.06779839452399011},
    {0.9281869952605065, 0.7340764432339163, 0.06473633152177802},
    {0.9348647560032063, 0.7332399472593506, 0.06153409549182203},
    {0.9415887827901075, 0.7323620734727282, 0.05817600081414671},
    {0.9483618296070789, 0.7314408700845915, 0.05464319204948797},
    {0.9551867263960355, 0.7304742804333765, 0.05091267430727054},
    {0.9620663856670674, 0.7294601350196509, 0.04695592752978028},
    {0.969003809463015, 0.7283961428276127, 0.042736864171117654},
    {0.9760020967144459, 0.7272798818559112, 0.03820781172010981},
    {0.9830644510261716, 0.7261087887699335, 0.033563594101567375},
    {0.9901941889400435, 0.7248801475763151, 0.028882205840193863},
    {0.997394748722857, 0.7235910772073515, 0.02416341821329423},
    {0.9994756097828498, 0.7236186006830972, 0.1338358903634513},
    {0.9996062364298045, 0.7242029149199048, 0.20670260904135251},
    {0.9997372610330627, 0.7248360083742931, 0.25695026482473976},
    {0.9998685550308529, 0.7255149193050311, 0.29657650391717033},
    {0.9999999999999759, 0.7262369229449295, 0.32972148614219976},
};

// original colormap inspired by https://www.reddit.com/r/outrun/
const int outrun_n = 256;
const float outrun[outrun_n][3] = {
    {0.6995219211389634, 0.15578240287604897, 0.20064813606336473},
    {0.7006888422437509, 0.15668865562063297, 0.21433975428712065},
    {0.7018679722403903, 0.15758605221156824, 0.22712755608134405},
    {0.7030586572814945, 0.15847496165710695, 0.23916349596621456},
    {0.7042602666776224, 0.15935573403598655, 0.2505630800700725},
    {0.7054721913222575, 0.16022870182752472, 0.26141650001881495},
    {0.7066938422155721, 0.16109418113636595, 0.2717957518977096},
    {0.7079246490786785, 0.16195247282180256, 0.2817593771569051},
    {0.7091640590507948, 0.16280386354054618, 0.29135572845003},
    {0.7104115354623887, 0.16364862671090208, 0.30062528456623205},
    {0.7116665566779623, 0.16448702340548413, 0.30960233198583564},
    {0.7129286150026524, 0.16531930317888788, 0.31831621253539155},
    {0.7141972156472935, 0.16614570483609875, 0.32679226644476583},
    {0.715471875747023, 0.1669664571468468, 0.33505255694353403},
    {0.7167521234288781, 0.16778177951061812, 0.3431164351748548},
    {0.7180374969241863, 0.16859188257657517, 0.35100098640031385},
    {0.7193275437218576, 0.16939696882225463, 0.35872138660715774},
    {0.7206218197589654, 0.17019723309453605, 0.36629119055869847},
    {0.7219198886452554, 0.17099286311607, 0.373722566732733},
    {0.7232213209184418, 0.17178403996006134, 0.3810264906457584},
    {0.7245256933273628, 0.17257093849605262, 0.3882129052329925},
    {0.7258325881402383, 0.17335372780911376, 0.3952908548992803},
    {0.7271415924754381, 0.17413257159465437, 0.402268598342985},
    {0.7284522976523217, 0.1749076285308726, 0.4091537041275768},
    {0.7297642985598216, 0.1756790526307027, 0.41595313212609436},
    {0.7310771930405797, 0.1764469935749609, 0.4226733033169488},
    {0.7323905812885187, 0.1772115970282706, 0.42932015991242317},
    {0.733704065257843, 0.17797300493920373, 0.4358992174157171},
    {0.7350172480815216, 0.17873135582599667, 0.4424156099009187},
    {0.736329733497372, 0.17948678504906562, 0.4488741295726784},
    {0.7376411252799226, 0.18023942507149124, 0.45527926147372805},
    {0.7389510266762713, 0.18098940570853425, 0.46163521405759783},
    {0.740259039844179, 0.18173685436719722, 0.467945946222544},
    {0.7415647652906808, 0.18248189627675906, 0.47421519130449913},
    {0.7428678013094948, 0.1832246547111727, 0.48044647844687877},
    {0.744167743415512, 0.18396525120414947, 0.4866431516996203},
    {0.7454641837746633, 0.1847038057577196, 0.49280838714597014},
    {0.7467567106274294, 0.18544043704499805, 0.4989452083109836},
    {0.7480449077042345, 0.1861752626078843, 0.5050565000687162},
    {0.7493283536309551, 0.18690839905034676, 0.5111450212342078},
    {0.7506066213227068, 0.18763996222795365, 0.5172134160005107},
    {0.7518792773640389, 0.1883700674342737, 0.5232642243592496},
    {0.7531458813735987, 0.1890988295847378, 0.5292998916248585},
    {0.7544059853512564, 0.18982636339856407, 0.5353227771670758},
    {0.7556591330055986, 0.19055278357931027, 0.541335162443061},
    {0.7569048590596104, 0.19127820499461246, 0.5473392584092507},
    {0.7581426885322423, 0.1920027428556806, 0.5533372123834084},
    {0.759372135993465, 0.19272651289708803, 0.5593311144191071},
    {0.7605927047902525, 0.19344963155741357, 0.5653230032477647},
    {0.7618038862408063, 0.1941722161612856, 0.5713148718372687},
    {0.7630051587941564, 0.19489438510338464, 0.5773086726109584},
    {0.7641959871520927, 0.19561625803497434, 0.5833063223661967},
    {0.765375821350183, 0.19633795605352616, 0.5893097069278279},
    {0.7665440957943994, 0.19705960189603539, 0.5953206855684355},
    {0.7677002282496392, 0.1977813201366303, 0.6013410952243732},
    {0.7688436187761415, 0.19850323738909798, 0.6073727545340059},
    {0.7699736486095119, 0.19922548251497785, 0.6134174677224146},
    {0.7710896789797214, 0.19994818683790289, 0.6194770283549321},
    {0.7721910498641045, 0.2006714843648848, 0.6255532229802739},
    {0.7732770786689463, 0.20139551201529415, 0.6316478346826443},
    {0.7743470588338377, 0.20212040985831464, 0.6377626465610485},
    {0.7754002583524631, 0.20284632135969233, 0.6438994451530683},
    {0.7764359182029617, 0.20357339363865545, 0.6500600238195717},
    {0.7774532506804015, 0.20430177773593522, 0.6562461861061887},
    {0.7784514376232377, 0.20503162889387438, 0.662459749096901},
    {0.7794296285249193, 0.20576310684967308, 0.668702546774752},
    {0.7803869385209783, 0.20649637614290722, 0.6749764334044508},
    {0.781322446241056, 0.20723160643852745, 0.6812832869515667},
    {0.7822351915143299, 0.2079689728666304, 0.6876250125530301},
    {0.7831241729156923, 0.20870865638040942, 0.6940035460537994},
    {0.7839883451388262, 0.2094508441337849, 0.7004208576248208},
    {0.7848266161809417, 0.21019572988034124, 0.7068789554777896},
    {0.7856378443224412, 0.21094351439532838, 0.7133798896927283},
    {0.7864208348830708, 0.21169440592263428, 0.7199257561750168},
    {0.7871743367342345, 0.21244862064879189, 0.7265187007592776},
    {0.7878970385450292, 0.21320638320626217, 0.7331609234784178},
    {0.7885875647371912, 0.213967927208434, 0.7398546830171644},
    {0.7892444711214803, 0.21473349581899825, 0.7466023013706402},
    {0.7898662401850524, 0.2155033423585882, 0.7534061687299008},
    {0.790451275995988, 0.21627773095185504, 0.7602687486178993},
    {0.7909978986873831, 0.2170569372184301, 0.7671925833011239},
    {0.7915043384791001, 0.21784124901156315, 0.7741802995041204},
    {0.791968729190455, 0.2186309672085815, 0.7812346144563541},
    {0.7923891011916216, 0.21942640655772827, 0.7883583423033649},
    {0.7927633737353147, 0.22022789658637587, 0.7955544009169783},
    {0.7930893466032161, 0.2210357825761286, 0.8028258191424822},
    {0.7933646909935487, 0.22185042661087362, 0.8101757445242159},
    {0.793586939566977, 0.22267220870447457, 0.8176074515549598},
    {0.7937534755574575, 0.22350152801550488, 0.8251243504989731},
    {0.7938615208425587, 0.2243388041571936, 0.8327299968434835},
    {0.7939081228538662, 0.22518447861164936, 0.8404281014390514},
    {0.7938901401920351, 0.22603901625841394, 0.8482225413955095},
    {0.7938042267925445, 0.22690290702851623, 0.8561173718072551},
    {0.7936468144667512, 0.22777666769644894, 0.864116838389677},
    {0.7934140936179354, 0.22866084382392032, 0.8722253911174873},
    {0.7931019919030178, 0.22955601187084607, 0.8804476989659166},
    {0.7927061505767865, 0.23046278149084565, 0.8887886658672752},
    {0.792221898215781, 0.23138179803061087, 0.8972534480084321},
    {0.7916442214724113, 0.23231374525484777, 0.9058474726096326},
    {0.7909677324549722, 0.2332593483211755, 0.9145764583419699},
    {0.7901866322642623, 0.23421937703244944, 0.9234464375600884},
    {0.7845470201920872, 0.24491488288357843, 0.9258715791022764},
    {0.7776322749882626, 0.2574572247765806, 0.9265101958648819},
    {0.7707504088373814, 0.2692242173735485, 0.9271438691010658},
    {0.763898253546721, 0.2803241468038515, 0.9277726757594161},
    {0.7570726823817646, 0.290842998629791, 0.9283966900542732},
    {0.7502706028787335, 0.3008503835428957, 0.9290159836139211},
    {0.7434889497528683, 0.3104035829495661, 0.929630625618626},
    {0.7367246778641108, 0.3195503951792033, 0.9302406829293327},
    {0.7299747552017288, 0.32833118985553156, 0.9308462202077571},
    {0.7232361558489397, 0.33678042389747254, 0.9314473000285494},
    {0.7165058528876508, 0.34492778203938157, 0.9320439829841348},
    {0.709780811202087, 0.35279904957389735, 0.9326363277827986},
    {0.7030579801382209, 0.36041679033225416, 0.9332243913405178},
    {0.6963342859735616, 0.3678008805069841, 0.9338082288670159},
    {0.6896066241488975, 0.37496893408807314, 0.9343878939464586},
    {0.682871851210025, 0.3819366456490518, 0.9349634386131939},
    {0.6761267764031534, 0.38871806929768177, 0.9355349134228851},
    {0.6693681528625477, 0.3953258477462181, 0.936102367519373},
    {0.6625926683228764, 0.4017714019892283, 0.9366658486975721},
    {0.6557969352815415, 0.40806508956704335, 0.9372254034626732},
    {0.6489774805278063, 0.41421633755135756, 0.9377810770859175},
    {0.6421307339455911, 0.42023375502155724, 0.9383329136571711},
    {0.6352530164850985, 0.42612522877257886, 0.9388809561345257},
    {0.6283405271846598, 0.4318980052147201, 0.9394252463911189},
    {0.6213893291079724, 0.4375587608274555, 0.9399658252593693},
    {0.6143953340427308, 0.44311366306630307, 0.9405027325727906},
    {0.6073542857839758, 0.44856842326045515, 0.9410360072055467},
    {0.6002617417985902, 0.45392834275463917, 0.9415656871098989},
    {0.5931130530353145, 0.4591983533234166, 0.9420918093516744},
    {0.5859033416064043, 0.464383052706318, 0.9426144101438902},
    {0.578627476021161, 0.46948673596778284, 0.9431335248786448},
    {0.5712800435963233, 0.4745134232690829, 0.9436491881573885},
    {0.5638553196014977, 0.47946688454446035, 0.9441614338196771},
    {0.5563472326166707, 0.4843506614960548, 0.9446702949704963},
    {0.5487493254797322, 0.48916808725835753, 0.9451758040062529},
    {0.5410547110803415, 0.49392230403020637, 0.9456779926395072},
    {0.5332560221063304, 0.49861627892854626, 0.9461768919225312},
    {0.5253453536624277, 0.5032528182816921, 0.9466725322697535},
    {0.5173141974481347, 0.5078345805492553, 0.9471649434791692},
    {0.5091533658884749, 0.5123640880302012, 0.9476541547527676},
    {0.5008529042399126, 0.5168437374988061, 0.9481401947160405},
    {0.49240198821938647, 0.5212758098899112, 0.9486230914366257},
    {0.48378880409363617, 0.525662479139235, 0.9491028724421345},
    {0.4750004073726463, 0.5300058202711903, 0.9495795647372115},
    {0.4660225552106286, 0.5343078168152319, 0.950053194819877},
    {0.45683950623983866, 0.538570367621984, 0.9505237886971843},
    {0.44743377971664805, 0.5427952931419617, 0.9509913719002437},
    {0.43778586335771524, 0.546984341222429, 0.9514559694986365},
    {0.42787385580969656, 0.5511391924716499, 0.951917606114271},
    {0.4176730249144461, 0.5552614652343182, 0.9523763059346985},
    {0.4071552561718045, 0.559352720217222, 0.9528320927259316},
    {0.39628835608287494, 0.5634144648000596, 0.9532849898447876},
    {0.3850351608206118, 0.5674481570627166, 0.9537350202507912},
    {0.3733523793877774, 0.5714552095571701, 0.9541822065176592},
    {0.36118906785203236, 0.5754369928494335, 0.9546265708443943},
    {0.3484845801073005, 0.5793948388545221, 0.9550681350660138},
    {0.3351657579256292, 0.5833300439853326, 0.9555069206639345},
    {0.32114298483029263, 0.5872438721344474, 0.9559429487760348},
    {0.30630448812552286, 0.5911375575062683, 0.9563762402064239},
    {0.29050783680256315, 0.5950123073154497, 0.956806815434926},
    {0.2735667458124903, 0.5988693043663599, 0.9572346946263096},
    {0.25522958484326574, 0.6027097095272077, 0.9576598976392788},
    {0.23514219748457488, 0.6065346641115347, 0.958082444035243},
    {0.22412374426974246, 0.6100969394265018, 0.9545168474135727},
    {0.2231857700677784, 0.6133403908338557, 0.9475122286983383},
    {0.22229084558813295, 0.6164848716625677, 0.9408926012296084},
    {0.22143492009813104, 0.6195398342067007, 0.9346275670871278},
    {0.22061438281654422, 0.6225135805474238, 0.9286898384994279},
    {0.21982600398655516, 0.6254134328021066, 0.9230548414486636},
    {0.2190668851824868, 0.6282458739597457, 0.9177003790812018},
    {0.21833441720137597, 0.6310166650747232, 0.9126063445550837},
    {0.21762624421920868, 0.6337309433298333, 0.9077544749750185},
    {0.2169402331483578, 0.6363933045205605, 0.9031281396505871},
    {0.21627444733453782, 0.6390078727773979, 0.8987121571658159},
    {0.21562712389120448, 0.6415783597748562, 0.8944926367442645},
    {0.21499665409646418, 0.6441081152335921, 0.8904568401906159},
    {0.21438156637920597, 0.6466001701754724, 0.8865930613309625},
    {0.2137805115031261, 0.6490572741179063, 0.8828905203926972},
    {0.2131922496235374, 0.6514819271766973, 0.8793392711868057},
    {0.2126156389457649, 0.6538764078733008, 0.8759301193000899},
    {0.2120496257579344, 0.6562427973031729, 0.8726545497879569},
    {0.21149323564712424, 0.6585830002095192, 0.8695046630918559},
    {0.21094556573761108, 0.6608987634155766, 0.8664731180988593},
    {0.21040577781460856, 0.6631916919942317, 0.8635530814216933},
    {0.20987309221738953, 0.6654632634928944, 0.8607381821118418},
    {0.2093467824027742, 0.6677148404814724, 0.858022471130871},
    {0.20882617009424853, 0.669947681649918, 0.8554003849998041},
    {0.2083106209440463, 0.6721629516475056, 0.8528667131262624},
    {0.2077995406456073, 0.6743617298274305, 0.8504165683767317},
    {0.20729237144244017, 0.6765450180364512, 0.8480453605188212},
    {0.20678858898664543, 0.6787137475692612, 0.8457487722073059},
    {0.20628769950658304, 0.6808687853904445, 0.8435227372296382},
    {0.20578923724839415, 0.6830109397126319, 0.8413634207624527},
    {0.20529276216066072, 0.6851409650074293, 0.8392672014214247},
    {0.20479785779529197, 0.6872595665154628, 0.837230654913404},
    {0.20430412940114479, 0.6893674043131524, 0.8352505391226699},
    {0.20381120218966325, 0.6914650969863854, 0.8333237804830403},
    {0.2033187197543901, 0.693553224954877, 0.8314474615048006},
    {0.20282634262830018, 0.6956323334855155, 0.8296188093404088},
    {0.20233374696479756, 0.6977029354282737, 0.8278351852860328},
    {0.20184062332984498, 0.6997655137041935, 0.8260940751273831},
    {0.20134667559410802, 0.7018205235714162, 0.8243930802483158},
    {0.20085161991522255, 0.703868394692177, 0.8227299094294626},
    {0.20035518380142225, 0.7059095330210212, 0.8211023712718373},
    {0.19985710524865036, 0.7079443225321834, 0.8195083671871883},
    {0.19935713194419008, 0.7099731268020462, 0.8179458849028238},
    {0.19885502053050386, 0.7119962904608301, 0.8164129924339597},
    {0.19835053592371088, 0.7140141405261102, 0.8149078324812951},
    {0.19784345068162495, 0.7160269876293995, 0.813428617215695},
    {0.19733354441683748, 0.7180351271458368, 0.8119736234155249},
    {0.19682060325075118, 0.7200388402359643, 0.8105411879254691},
    {0.19630441930489045, 0.7220383948076445, 0.8091297034085704},
    {0.1957847902261487, 0.7240340464053457, 0.8077376143658266},
    {0.19526151874296377, 0.7260260390332971, 0.806363413400007},
    {0.19473441224968596, 0.7280146059183568, 0.8050056377023942},
    {0.19420328241666887, 0.7299999702178739, 0.803662865743032},
    {0.19366794482381483, 0.7319823456773054, 0.8023337141466915},
    {0.19312821861552423, 0.7339619372418948, 0.8010168347382646},
    {0.19258392617516865, 0.7359389416263108, 0.7997109117425953},
    {0.19203489281738848, 0.7379135478457847, 0.7984146591249656},
    {0.1914809464966184, 0.739885937711955, 0.7971268180595038},
    {0.19092191753042131, 0.7418562862963372, 0.7958461545137223},
    {0.19035763833629868, 0.7438247623640771, 0.7945714569382663},
    {0.1897879431807458, 0.7457915287804129, 0.7933015340516817},
    {0.18921266793944266, 0.7477567428920501, 0.7920352127107144},
    {0.1886316498675156, 0.7497205568854782, 0.7907713358572345},
    {0.18804472737892602, 0.7516831181240766, 0.789508760533421},
    {0.1874517398340548, 0.7536445694657039, 0.7882463559573142},
    {0.18685252733467356, 0.7556050495623309, 0.7869830016512543},
    {0.1862469305254878, 0.7575646931431471, 0.7857175856160845},
    {0.18563479040153888, 0.759523631282459, 0.7844490025443089},
    {0.18501594812074348, 0.7614819916535951, 0.7831761520656657},
    {0.1843902448209431, 0.7634398987699396, 0.7818979370187891},
    {0.18375752144081037, 0.7653974742141355, 0.780613261742825},
    {0.18311761854404532, 0.7673548368564177, 0.7793210303829977},
    {0.18247037614627526, 0.7693121030629679, 0.7780201452042331},
    {0.18181563354411234, 0.771269386895129, 0.7767095049070155},
    {0.18115322914586568, 0.7732268003002487, 0.7753880029396767},
    {0.18048300030335584, 0.7751844532948764, 0.7740545258013176},
    {0.17980478314438614, 0.7771424541409971, 0.7727079513295207},
    {0.17911841240531776, 0.779100909515934, 0.7713471469669377},
    {0.17842372126333755, 0.7810599246765226, 0.7699709680007135},
    {0.1777205411678869, 0.783019603618119, 0.7685782557685723},
    {0.17700870167079702, 0.7849800492289839, 0.7671678358251809},
    {0.1762880302546718, 0.7869413634405473, 0.7657385160621889},
    {0.17555835215900784, 0.7889036473740385, 0.7642890847750602},
    {0.1748194902035906, 0.7908670014839517, 0.7628183086694887},
    {0.17407126460866643, 0.7928315256987878, 0.7613249307998223},
    {0.17331349281139305, 0.7947973195595041, 0.7598076684314833},
    {0.17254598927803155, 0.79676448235609, 0.7582652108189076},
    {0.1717685653113973, 0.7987331132626727, 0.7566962168899505},
    {0.1709810288529338, 0.8007033114715485, 0.7550993128271232},
    {0.17018318427892482, 0.8026751763265272, 0.7534730895352902},
    {0.1693748321901824, 0.8046488074559787, 0.7518160999847272},
    {0.16855576919460707, 0.8066243049059528, 0.7501268564175199},
};

const int cubehelix_n = 256;
const float cubehelix[cubehelix_n][3] = {
    {0.00000, 0.00000, 0.00000}, {0.00802, 0.00136, 0.00662},
    {0.01578, 0.00279, 0.01353}, {0.02327, 0.00432, 0.02072},
    {0.03046, 0.00594, 0.02817}, {0.03737, 0.00767, 0.03587},
    {0.04396, 0.00951, 0.04379}, {0.05023, 0.01147, 0.05192},
    {0.05618, 0.01357, 0.06024}, {0.06179, 0.01580, 0.06873},
    {0.06706, 0.01818, 0.07738}, {0.07198, 0.02070, 0.08616},
    {0.07655, 0.02339, 0.09505}, {0.08077, 0.02623, 0.10404},
    {0.08462, 0.02925, 0.11311}, {0.08812, 0.03243, 0.12223},
    {0.09125, 0.03580, 0.13139}, {0.09402, 0.03934, 0.14056},
    {0.09644, 0.04306, 0.14973}, {0.09850, 0.04697, 0.15887},
    {0.10020, 0.05106, 0.16797}, {0.10156, 0.05535, 0.17701},
    {0.10257, 0.05982, 0.18596}, {0.10324, 0.06448, 0.19481},
    {0.10359, 0.06933, 0.20354}, {0.10361, 0.07436, 0.21212},
    {0.10332, 0.07959, 0.22055}, {0.10273, 0.08500, 0.22881},
    {0.10184, 0.09059, 0.23687}, {0.10067, 0.09636, 0.24472},
    {0.09924, 0.10231, 0.25234}, {0.09755, 0.10844, 0.25972},
    {0.09561, 0.11473, 0.26685}, {0.09345, 0.12118, 0.27370},
    {0.09108, 0.12780, 0.28027}, {0.08851, 0.13457, 0.28655},
    {0.08576, 0.14149, 0.29251}, {0.08284, 0.14855, 0.29815},
    {0.07978, 0.15574, 0.30347}, {0.07659, 0.16306, 0.30844},
    {0.07329, 0.17050, 0.31306}, {0.06989, 0.17806, 0.31732},
    {0.06642, 0.18572, 0.32122}, {0.06289, 0.19347, 0.32475},
    {0.05933, 0.20132, 0.32790}, {0.05575, 0.20924, 0.33067},
    {0.05217, 0.21723, 0.33306}, {0.04861, 0.22528, 0.33506},
    {0.04510, 0.23338, 0.33667}, {0.04164, 0.24152, 0.33790},
    {0.03826, 0.24969, 0.33873}, {0.03499, 0.25788, 0.33918},
    {0.03183, 0.26608, 0.33924}, {0.02881, 0.27428, 0.33892},
    {0.02594, 0.28248, 0.33823}, {0.02325, 0.29065, 0.33716},
    {0.02076, 0.29879, 0.33572}, {0.01847, 0.30689, 0.33393},
    {0.01641, 0.31495, 0.33178}, {0.01460, 0.32294, 0.32929},
    {0.01305, 0.33086, 0.32647}, {0.01177, 0.33869, 0.32332},
    {0.01079, 0.34644, 0.31986}, {0.01012, 0.35409, 0.31610},
    {0.00977, 0.36163, 0.31205}, {0.00975, 0.36904, 0.30772},
    {0.01008, 0.37633, 0.30314}, {0.01078, 0.38349, 0.29830},
    {0.01184, 0.39049, 0.29324}, {0.01329, 0.39735, 0.28796},
    {0.01513, 0.40404, 0.28248}, {0.01738, 0.41056, 0.27682},
    {0.02003, 0.41690, 0.27100}, {0.02310, 0.42306, 0.26503},
    {0.02660, 0.42903, 0.25893}, {0.03052, 0.43481, 0.25272},
    {0.03488, 0.44038, 0.24642}, {0.03968, 0.44574, 0.24005},
    {0.04491, 0.45089, 0.23362}, {0.05060, 0.45582, 0.22717},
    {0.05672, 0.46052, 0.22070}, {0.06329, 0.46501, 0.21424},
    {0.07030, 0.46926, 0.20781}, {0.07776, 0.47328, 0.20143},
    {0.08565, 0.47707, 0.19511}, {0.09398, 0.48062, 0.18889},
    {0.10274, 0.48394, 0.18277}, {0.11193, 0.48701, 0.17678},
    {0.12153, 0.48985, 0.17094}, {0.13155, 0.49245, 0.16527},
    {0.14197, 0.49480, 0.15978}, {0.15279, 0.49693, 0.15450},
    {0.16399, 0.49881, 0.14944}, {0.17556, 0.50047, 0.14463},
    {0.18750, 0.50189, 0.14008}, {0.19979, 0.50309, 0.13580},
    {0.21242, 0.50406, 0.13182}, {0.22537, 0.50481, 0.12815},
    {0.23864, 0.50534, 0.12480}, {0.25219, 0.50566, 0.12180},
    {0.26603, 0.50578, 0.11915}, {0.28013, 0.50569, 0.11687},
    {0.29448, 0.50541, 0.11497}, {0.30905, 0.50495, 0.11347},
    {0.32384, 0.50430, 0.11238}, {0.33881, 0.50348, 0.11170},
    {0.35396, 0.50249, 0.11146}, {0.36927, 0.50135, 0.11164},
    {0.38471, 0.50005, 0.11228}, {0.40027, 0.49862, 0.11337},
    {0.41592, 0.49705, 0.11491}, {0.43165, 0.49536, 0.11692},
    {0.44743, 0.49355, 0.11941}, {0.46324, 0.49165, 0.12237},
    {0.47907, 0.48964, 0.12580}, {0.49489, 0.48756, 0.12971},
    {0.51068, 0.48540, 0.13411}, {0.52642, 0.48318, 0.13899},
    {0.54209, 0.48090, 0.14434}, {0.55767, 0.47859, 0.15018},
    {0.57314, 0.47624, 0.15649}, {0.58848, 0.47387, 0.16328},
    {0.60367, 0.47149, 0.17054}, {0.61868, 0.46912, 0.17826},
    {0.63350, 0.46676, 0.18643}, {0.64812, 0.46442, 0.19506},
    {0.66250, 0.46212, 0.20413}, {0.67664, 0.45986, 0.21363},
    {0.69051, 0.45766, 0.22356}, {0.70410, 0.45552, 0.23390},
    {0.71740, 0.45346, 0.24464}, {0.73037, 0.45149, 0.25578},
    {0.74302, 0.44962, 0.26729}, {0.75532, 0.44785, 0.27916},
    {0.76727, 0.44620, 0.29139}, {0.77884, 0.44468, 0.30395},
    {0.79002, 0.44330, 0.31683}, {0.80081, 0.44206, 0.33002},
    {0.81118, 0.44097, 0.34349}, {0.82114, 0.44005, 0.35723},
    {0.83067, 0.43930, 0.37123}, {0.83976, 0.43873, 0.38546},
    {0.84841, 0.43834, 0.39990}, {0.85660, 0.43814, 0.41454},
    {0.86434, 0.43814, 0.42936}, {0.87161, 0.43835, 0.44433},
    {0.87841, 0.43877, 0.45945}, {0.88474, 0.43941, 0.47468},
    {0.89059, 0.44027, 0.49001}, {0.89597, 0.44136, 0.50541},
    {0.90088, 0.44267, 0.52087}, {0.90530, 0.44422, 0.53637},
    {0.90926, 0.44601, 0.55188}, {0.91274, 0.44803, 0.56739},
    {0.91575, 0.45030, 0.58287}, {0.91829, 0.45281, 0.59830},
    {0.92038, 0.45557, 0.61367}, {0.92201, 0.45857, 0.62895},
    {0.92319, 0.46182, 0.64412}, {0.92393, 0.46531, 0.65916},
    {0.92424, 0.46905, 0.67406}, {0.92413, 0.47303, 0.68880},
    {0.92360, 0.47725, 0.70335}, {0.92268, 0.48171, 0.71770},
    {0.92136, 0.48641, 0.73183}, {0.91967, 0.49135, 0.74573},
    {0.91761, 0.49651, 0.75937}, {0.91520, 0.50190, 0.77275},
    {0.91246, 0.50751, 0.78584}, {0.90939, 0.51334, 0.79863},
    {0.90602, 0.51938, 0.81111}, {0.90236, 0.52562, 0.82326},
    {0.89843, 0.53207, 0.83508}, {0.89424, 0.53871, 0.84654},
    {0.88981, 0.54553, 0.85765}, {0.88517, 0.55253, 0.86838},
    {0.88032, 0.55970, 0.87873}, {0.87530, 0.56704, 0.88869},
    {0.87011, 0.57453, 0.89825}, {0.86477, 0.58217, 0.90741},
    {0.85932, 0.58994, 0.91615}, {0.85376, 0.59785, 0.92448},
    {0.84811, 0.60587, 0.93240}, {0.84240, 0.61401, 0.93988},
    {0.83665, 0.62224, 0.94695}, {0.83087, 0.63056, 0.95358},
    {0.82508, 0.63897, 0.95979}, {0.81932, 0.64744, 0.96558},
    {0.81358, 0.65597, 0.97093}, {0.80791, 0.66456, 0.97587},
    {0.80230, 0.67318, 0.98038}, {0.79679, 0.68184, 0.98448},
    {0.79139, 0.69051, 0.98817}, {0.78612, 0.69919, 0.99146},
    {0.78100, 0.70786, 0.99435}, {0.77604, 0.71653, 0.99684},
    {0.77127, 0.72517, 0.99896}, {0.76669, 0.73378, 1.00000},
    {0.76233, 0.74235, 1.00000}, {0.75820, 0.75087, 1.00000},
    {0.75431, 0.75932, 1.00000}, {0.75069, 0.76771, 1.00000},
    {0.74733, 0.77601, 1.00000}, {0.74427, 0.78422, 1.00000},
    {0.74150, 0.79234, 1.00000}, {0.73903, 0.80035, 1.00000},
    {0.73689, 0.80824, 1.00000}, {0.73508, 0.81601, 1.00000},
    {0.73360, 0.82365, 0.99879}, {0.73247, 0.83116, 0.99707},
    {0.73169, 0.83852, 0.99516}, {0.73127, 0.84573, 0.99309},
    {0.73122, 0.85278, 0.99086}, {0.73153, 0.85968, 0.98850},
    {0.73222, 0.86640, 0.98603}, {0.73327, 0.87296, 0.98347},
    {0.73471, 0.87933, 0.98083}, {0.73652, 0.88553, 0.97813},
    {0.73870, 0.89155, 0.97540}, {0.74126, 0.89738, 0.97265},
    {0.74419, 0.90302, 0.96991}, {0.74749, 0.90847, 0.96718},
    {0.75115, 0.91373, 0.96450}, {0.75518, 0.91880, 0.96188},
    {0.75955, 0.92367, 0.95934}, {0.76427, 0.92835, 0.95689},
    {0.76933, 0.93284, 0.95457}, {0.77471, 0.93715, 0.95237},
    {0.78042, 0.94126, 0.95033}, {0.78643, 0.94518, 0.94846},
    {0.79274, 0.94892, 0.94677}, {0.79933, 0.95249, 0.94528},
    {0.80619, 0.95587, 0.94402}, {0.81332, 0.95908, 0.94298},
    {0.82068, 0.96213, 0.94220}, {0.82827, 0.96501, 0.94167},
    {0.83608, 0.96773, 0.94142}, {0.84408, 0.97030, 0.94145},
    {0.85225, 0.97273, 0.94179}, {0.86059, 0.97502, 0.94243},
    {0.86907, 0.97718, 0.94339}, {0.87768, 0.97922, 0.94468},
    {0.88639, 0.98115, 0.94631}, {0.89518, 0.98296, 0.94828},
    {0.90404, 0.98468, 0.95060}, {0.91295, 0.98632, 0.95327},
    {0.92188, 0.98787, 0.95630}, {0.93081, 0.98936, 0.95970},
    {0.93973, 0.99078, 0.96346}, {0.94862, 0.99216, 0.96759},
    {0.95745, 0.99350, 0.97209}, {0.96619, 0.99481, 0.97695},
    {0.97484, 0.99611, 0.98217}, {0.98338, 0.99740, 0.98776},
    {0.99177, 0.99869, 0.99370}, {1.00000, 1.00000, 1.00000}};

// generated from:
// https://daniel.lawrence.lu/public/colortransform/#0_2423_964_352_6_2624_1000_513_11_3248_1000_617_15_415_1000_774
const int spezia_n = 256;
const float spezia[spezia_n][3] = {
    {0.04890922165917825, 0.34265700288230266, 0.5139042200196196},
    {0.04895672077739804, 0.34399228711079705, 0.5173325088859984},
    {0.04899969158023907, 0.34532432182766976, 0.5207851330769154},
    {0.049038068929181285, 0.34665300013643424, 0.5242624999557384},
    {0.0490717860366443, 0.3479782119131098, 0.5277650273921529},
    {0.04910077440233592, 0.34929984367863964, 0.5312931441090918},
    {0.04912496374647964, 0.35061777846523556, 0.5348472900437968},
    {0.049144281939685876, 0.35193189567631167, 0.5384279167237124},
    {0.04915865492929047, 0.3532420709396423, 0.5420354876579142},
    {0.04916800666192803, 0.3545481759533582, 0.5456704787448663},
    {0.04917225900211732, 0.3558500783243678, 0.5493333786972924},
    {0.04917133164659893, 0.35714764139876426, 0.553024689485032},
    {0.0491651420341628, 0.35844072408375016, 0.5567449267967906},
    {0.049153605250673076, 0.35972918066057785, 0.5604946205217287},
    {0.04913663392897654, 0.36101286058797066, 0.5642743152519267},
    {0.04911413814335756, 0.36229160829545354, 0.5680845708067875},
    {0.04908602529819959, 0.36356526296598163, 0.5719259627805287},
    {0.04905220001042406, 0.36483365830721187, 0.5757990831139734},
    {0.04901256398533129, 0.36609662231071893, 0.5797045406919258},
    {0.04896701588534969, 0.36735397699840217, 0.5836429619674972},
    {0.04891545119124254, 0.36860553815528246, 0.5876149916148347},
    {0.04885776205520153, 0.36985111504782353, 0.5916212932117864},
    {0.048793837145294165, 0.371090510126853, 0.5956625499541581},
    {0.048723561480604215, 0.37232351871408936, 0.5997394654032839},
    {0.04864681625641982, 0.37354992867120285, 0.6038527642687842},
    {0.0485634786587359, 0.37476952005026626, 0.6080031932284756},
    {0.04847342166723854, 0.3759820647243526, 0.6121915217875443},
    {0.04837651384597603, 0.37718732599695254, 0.6164185431792271},
    {0.04827261912068898, 0.3783850581887729, 0.6206850753093874},
    {0.04816159654185025, 0.37957500620037093, 0.6249919617475522},
    {0.04804330003224206, 0.38075690504895116, 0.6293400727671268},
    {0.047917578117875524, 0.3819304793775204, 0.633730306437712},
    {0.04778427364089425, 0.38309544293445374, 0.6381635897726399},
    {0.04764322345301101, 0.38425149802135766, 0.6426408799350484},
    {0.04749425808786458, 0.385398334906948, 0.6471631655060938},
    {0.04733720141054259, 0.3865356312044689, 0.6517314678190856},
    {0.04717187024231324, 0.3876630512099673, 0.6563468423636755},
    {0.046998073958454976, 0.38878024519851034, 0.6610103802644818},
    {0.046815614056824016, 0.3898868486751851, 0.6657232098388559},
    {0.04662428369457814, 0.3909824815774357, 0.6704864982388766},
    {0.04642386719018477, 0.39206674742499825, 0.6753014531830023},
    {0.04621413948754389, 0.39313923241335524, 0.6801693247832367},
    {0.045994865578738504, 0.3941995044462622, 0.6850914074741193},
    {0.04576579988147745, 0.39524711210249736, 0.6900690420503143},
    {0.04552668556693947, 0.3962815835315315, 0.6951036178201221},
    {0.04527725383318241, 0.39730242527232407, 0.7001965748827989},
    {0.04501722311872807, 0.39830912098889804, 0.7053494065382041},
    {0.04474629825033485, 0.39930113011574186, 0.7105636618379779},
    {0.044464169518219306, 0.4002778864054065, 0.7158409482881979},
    {0.044170511671191286, 0.4012387963699213, 0.7211829347142875},
    {0.04386498282321687, 0.4021832376068135, 0.7265913542998228},
    {0.04354722326188234, 0.4031105569995846, 0.7320680078119023},
    {0.04321685414797862, 0.40402006878146585, 0.7376147670267773},
    {0.0428734760940282, 0.40491105245010933, 0.743233578370643},
    {0.042516667607970175, 0.40578275051957646, 0.748926466791789},
    {0.04214598338630927, 0.4066343660945334, 0.7546955398817109},
    {0.04176095243886018, 0.40746506024993384, 0.7605429922643745},
    {0.04136107602475044, 0.40827394919762916, 0.766471110274553},
    {0.04094582537627162, 0.4090601012192915, 0.7724822769480404},
    {0.04051463918382638, 0.40982253334270374, 0.7785789773486957},
    {0.040061502782456945, 0.4105602077358398, 0.7847638042595603},
    {0.03959294089889664, 0.41127202779018696, 0.7910394642679004},
    {0.039109793546916495, 0.4119568338613871, 0.7974087842769024},
    {0.03861172210191932, 0.41261339863144436, 0.803874718479878},
    {0.0380983735795864, 0.4132404220523802, 0.8104403558364525},
    {0.03756937968562651, 0.4138365258262561, 0.8171089280940507},
    {0.03702435578736771, 0.4144002473707861, 0.8238838184024792},
    {0.0364628997996382, 0.4149300332132621, 0.8307685705742502},
    {0.03588459097638143, 0.4154242317480496, 0.8377668990487521},
    {0.035288988598694025, 0.4158810852842974, 0.844882699624589},
    {0.03467563054866628, 0.4162987213006144, 0.8521200610312002},
    {0.03404403175731731, 0.41667514281199364, 0.8594832774186676},
    {0.033393682513460185, 0.41700821774098445, 0.8669768618532854},
    {0.03272404661867004, 0.41729566716967786, 0.8746055609162682},
    {0.032034559371859575, 0.4175350523310705, 0.8823743705140761},
    {0.03132462536474723, 0.41772376017735885, 0.8902885530212784},
    {0.03059361606719027, 0.417858987338036, 0.8983536558911435},
    {0.029840867178669222, 0.41793772225168413, 0.9065755318852089},
    {0.02906567571902483, 0.4179567252211435, 0.9149603610913213},
    {0.028267296828018075, 0.41791250610119823, 0.9235146749206897},
    {0.027444940239127507, 0.41780129927982523, 0.9322453822980893},
    {0.026597766388240202, 0.4176190355565933, 0.9411597982868389},
    {0.02572488211232861, 0.41736131045306674, 0.9502656754213602},
    {0.02482533588680886, 0.41702334840740857, 0.9595712380560552},
    {0.023898112542860842, 0.416599962205498, 0.9690852200808441},
    {0.02294212739712791, 0.41608550687982504, 0.9788169064013666},
    {0.02195621971619119, 0.4154738271597193, 0.9887761786374855},
    {0.03533572637548167, 0.4150344767837667, 0.9966419438918287},
    {0.08206748636661013, 0.4154760610454022, 0.996875442497312},
    {0.1131664468320158, 0.4159292422424467, 0.9971067037505105},
    {0.1377759789309851, 0.4163940123475041, 0.9973357493609963},
    {0.1586260932452447, 0.4168703621191211, 0.9975626007042689},
    {0.17695881259992585, 0.41735828111703227, 0.997787278826484},
    {0.19346029551091778, 0.4178577577177723, 0.9980098044491156},
    {0.2085556849234767, 0.4183687791306285, 0.9982301979735458},
    {0.22252938052310162, 0.41889133141394447, 0.9984484794855942},
    {0.2355824089832244, 0.4194253994917421, 0.9986646687599702},
    {0.24786290560296725, 0.4199709671706614, 0.9988787852646682},
    {0.25948364869956886, 0.42052801715720073, 0.9990908481652964},
    {0.2705327829044692, 0.42109653107524325, 0.9993008763293371},
    {0.2810807045979947, 0.4216764894838623, 0.9995088883303488},
    {0.2911846624744039, 0.4222678718953844, 0.9997149024521047},
    {0.30089193496804306, 0.4228706567937021, 0.9999189366926701},
    {0.3199598560384707, 0.4211529467871777, 1.0000000000000044},
    {0.3436114893370144, 0.4178742172053897, 1.0000000000000047},
    {0.36539676089694495, 0.41458308629177515, 1.0000000000000044},
    {0.3856661632570949, 0.41127775518053283, 1.0000000000000042},
    {0.404675301565696, 0.407956362084171, 1.0000000000000044},
    {0.4226172861700883, 0.4046169767859018, 1.0000000000000047},
    {0.43964219386021874, 0.40125759469274436, 1.0000000000000047},
    {0.45586938841351193, 0.3978761303980185, 1.0000000000000047},
    {0.47139565849043324, 0.39447041069519134, 1.0000000000000047},
    {0.4863007849418988, 0.3910381669772773, 1.0000000000000047},
    {0.5006514638539757, 0.3875770269469873, 1.0000000000000044},
    {0.5145041416968924, 0.3840845055522841, 1.0000000000000047},
    {0.5279071095300848, 0.3805579950497078, 1.0000000000000047},
    {0.5409020797263486, 0.3769947540834305, 1.0000000000000044},
    {0.5535253932438766, 0.3733918956509583, 1.0000000000000044},
    {0.5658089579546876, 0.3697463738064324, 1.0000000000000042},
    {0.577780987780821, 0.366054968928604, 1.0000000000000049},
    {0.589466591997403, 0.3623142713523205, 1.0000000000000047},
    {0.6008882502481963, 0.35852066312849035, 1.0000000000000044},
    {0.6120661992793963, 0.3546702976368881, 1.0000000000000047},
    {0.6230187506929341, 0.35075907672718176, 1.0000000000000047},
    {0.6337625542333337, 0.34678262500419443, 1.0000000000000047},
    {0.6443128176539651, 0.3427362608011279, 1.0000000000000044},
    {0.6546834916623888, 0.33861496329592544, 1.0000000000000047},
    {0.664887426552217, 0.3344133351169368, 1.0000000000000044},
    {0.6749365057066918, 0.3301255596489445, 1.0000000000000047},
    {0.6848417600790246, 0.32574535208217403, 1.0000000000000047},
    {0.6946134669261637, 0.32126590303548275, 1.0000000000000049},
    {0.7042612354316643, 0.31667981331755896, 1.0000000000000047},
    {0.7137940813531695, 0.3119790180493533, 1.0000000000000049},
    {0.7232204924365964, 0.3071546979334297, 1.0000000000000049},
    {0.7325484860275505, 0.30219717488892517, 1.0000000000000047},
    {0.7417856600618409, 0.2970957885292609, 1.000000000000005},
    {0.7509392384175178, 0.2918387489798506, 1.0000000000000047},
    {0.760016111449703, 0.28641296022435003, 1.0000000000000047},
    {0.7690228723986646, 0.2808038063993306, 1.0000000000000049},
    {0.7779658502549104, 0.27499489103633235, 1.0000000000000049},
    {0.7868511395774846, 0.2689677158905533, 1.0000000000000047},
    {0.7956846276897148, 0.26270128126132847, 1.0000000000000047},
    {0.804472019617065, 0.2561715829275765, 1.0000000000000047},
    {0.8132188610824966, 0.2493509709254887, 1.0000000000000047},
    {0.8219305598337341, 0.24220732066040862, 1.0000000000000049},
    {0.8306124055427538, 0.23470294440057987, 1.0000000000000049},
    {0.8392695884894237, 0.2267931361345682, 1.0000000000000047},
    {0.847907217217596, 0.21842418639150069, 1.0000000000000047},
    {0.8565303353323375, 0.20953060994411976, 1.0000000000000049},
    {0.8651439375907393, 0.20003116767718654, 1.0000000000000049},
    {0.8737529854254381, 0.18982297245453064, 1.0000000000000049},
    {0.8823624220291222, 0.17877241522237444, 1.0000000000000047},
    {0.8909771871196978, 0.1667005280966983, 1.0000000000000047},
    {0.8996022314990386, 0.15335795616479617, 1.000000000000005},
    {0.9082425315133318, 0.13837882372526109, 1.0000000000000049},
    {0.9169031035195819, 0.12118667725012405, 1.0000000000000049},
    {0.9255890184609986, 0.10077304980525353, 1.0000000000000047},
    {0.9343054166534386, 0.07504334998300113, 1.0000000000000049},
    {0.9430575228859241, 0.03781952178921804, 1.000000000000005},
    {0.9509350420238839, 1.4218570765223148e-13, 0.9989984483716071},
    {0.9554497353124459, 1.4191675612451605e-13, 0.9943640499109371},
    {0.9599176427714787, 1.4433731987395504e-13, 0.9897799632511853},
    {0.9643412154073002, 1.4245465917994694e-13, 0.9852425190239346},
    {0.9687227616942858, 1.4191675612451605e-13, 0.9807481714229297},
    {0.9730644583865243, 1.411995520506082e-13, 0.9762934885028384},
    {0.9773683603724937, 1.3931689135660008e-13, 0.9718751430792824},
    {0.9816364096714153, 1.3886863881040766e-13, 0.9674899041721569},
    {0.9858704436584534, 1.4039269746746187e-13, 0.9631346289394122},
    {0.9900722025959202, 1.4397871783700112e-13, 0.9588062550529955},
    {0.9942433365389557, 1.4155815408756212e-13, 0.954501793472642},
    {0.9983854116765075, 1.3752388117183045e-13, 0.9502183215767478},
    {0.9999999999999819, 0.02804423714351181, 0.9437140548413381},
    {0.9999999999999823, 0.0675265531658979, 0.9359017685954015},
    {0.9999999999999826, 0.09447578037166751, 0.9282451825736049},
    {0.9999999999999823, 0.11567880450339993, 0.920737795368809},
    {0.9999999999999826, 0.13352190503381375, 0.9133734552831144},
    {0.9999999999999823, 0.1491028314594674, 0.906146335428585},
    {0.9999999999999826, 0.16303259275115084, 0.8990509109121838},
    {0.9999999999999826, 0.17569199214531872, 0.8920819378992011},
    {0.9999999999999826, 0.18733702217610845, 0.8852344343724449},
    {0.9999999999999826, 0.19814940356609517, 0.8785036624245576},
    {0.9999999999999823, 0.20826355122506324, 0.8718851119384158},
    {0.9999999999999823, 0.21778214249596284, 0.8653744855260821},
    {0.9999999999999826, 0.22678566871532468, 0.8589676846103573},
    {0.9999999999999823, 0.2353385863611125, 0.8526607965450058},
    {0.9999999999999828, 0.24349343831907827, 0.8464500826803465},
    {0.9999999999999826, 0.2512937077092952, 0.840331967290248},
    {0.9999999999999826, 0.2587758499993201, 0.8343030272849384},
    {0.999999999999983, 0.26739099502162367, 0.8275538904243963},
    {0.999999999999983, 0.2793555475103376, 0.8187524096848618},
    {0.9999999999999828, 0.29067538241472596, 0.810154074771914},
    {0.999999999999983, 0.3014349177286362, 0.8017491111724352},
    {0.9999999999999826, 0.31170258039783083, 0.7935283442712853},
    {0.9999999999999826, 0.3215347049761315, 0.7854831467895685},
    {0.9999999999999826, 0.3309782925632311, 0.7776053911816436},
    {0.9999999999999826, 0.3400730122474594, 0.7698874064041857},
    {0.9999999999999826, 0.34885268450644075, 0.7623219385454285},
    {0.999999999999983, 0.35734640143399626, 0.7549021148665397},
    {0.9999999999999826, 0.3655793867737775, 0.7476214108616114},
    {0.9999999999999826, 0.3735736659274856, 0.7404736199894286},
    {0.9999999999999828, 0.381348594792351, 0.7334528257702123},
    {0.9999999999999826, 0.38892128210540905, 0.7265533759748873},
    {0.9999999999999823, 0.3963069303390571, 0.7197698586639263},
    {0.9999999999999823, 0.4035191135203492, 0.7130970798581467},
    {0.9999999999999823, 0.410570005644612, 0.7065300426455539},
    {0.9999999999999821, 0.4174705699878856, 0.700063927546916},
    {0.9999999999999819, 0.4242307171780247, 0.6936940739785828},
    {0.9999999999999821, 0.4308594380852102, 0.6874159626644994},
    {0.9999999999999821, 0.4373649162525338, 0.6812251988606219},
    {0.9999999999999819, 0.44375462357781925, 0.6751174962642902},
    {0.9999999999999819, 0.4500354021895003, 0.6690886614886871},
    {0.9999999999999821, 0.45621353486890187, 0.6631345789884755},
    {0.9999999999999817, 0.4622948059133914, 0.657251196327135},
    {0.9999999999999817, 0.4682845539768576, 0.6514345096795133},
    {0.9999999999999817, 0.474187718141824, 0.645680549464667},
    {0.9999999999999817, 0.4800088782535285, 0.6399853660042518},
    {0.9999999999999815, 0.4857522903672667, 0.6343450151004509},
    {0.9999999999999815, 0.4914219180162633, 0.6287555434246979},
    {0.9999999999999815, 0.497021459890778, 0.6232129736041581},
    {0.9999999999999815, 0.5025543744242497, 0.6177132888869281},
    {0.9999999999999815, 0.5080239017046412, 0.6122524172590773},
    {0.999999999999981, 0.5134330830652836, 0.606826214876734},
    {0.9999999999999808, 0.518784778656747, 0.6014304486641499},
    {0.9999999999999808, 0.5240816832574693, 0.5960607779137368},
    {0.9999999999999806, 0.5293263405443853, 0.5907127347060119},
    {0.9999999999999806, 0.5345211560142691, 0.5853817029456958},
    {0.9999999999999808, 0.5396684087209026, 0.580062895784249},
    {0.9999999999999808, 0.5447702619716198, 0.5747513311680923},
    {0.9999999999999806, 0.5498287731085955, 0.5694418052146554},
    {0.9999999999999803, 0.5548459024848833, 0.5641288630740176},
    {0.9999999999999801, 0.5598235217321937, 0.5588067668806895},
    {0.9999999999999799, 0.5647634214064047, 0.5534694603362047},
    {0.9999999999999799, 0.569667318087479, 0.5481105293861371},
    {0.9999999999999801, 0.5745368610026079, 0.5427231583620321},
    {0.9999999999999797, 0.5793736382348097, 0.5373000808456486},
    {0.9999999999999797, 0.5841791825736894, 0.5318335243749407},
    {0.9999999999999797, 0.58895497706055, 0.5263151479421893},
    {0.9999999999999795, 0.5937024602763533, 0.5207359710263567},
    {0.9999999999999795, 0.5984230314181602, 0.5150862926436902},
    {0.9999999999999792, 0.6031180552074987, 0.5093555985787912},
    {0.9999999999999792, 0.607788866672662, 0.5035324545546109},
    {0.999999999999979, 0.6124367758461117, 0.4976043825895365},
    {0.999999999999979, 0.6170630724180334, 0.4915577171399405},
    {0.9999999999999788, 0.6216690303876014, 0.48537743679248463},
    {0.9999999999999788, 0.6262559127547657, 0.4790469661903673},
    {0.9999999999999784, 0.6308249762973255, 0.4725479414659382},
    {0.9999999999999786, 0.6353774764808859, 0.46585993058805514},
    {0.9999999999999784, 0.6399146725529954, 0.45896009754439654},
    {0.9999999999999784, 0.644437832877538, 0.45182279591800384},
    {0.9999999999999781, 0.6489482405714118, 0.4444190728188997},
    {0.9999999999999779, 0.6534471995128909, 0.4367160577509657},
    {0.9999999999999779, 0.6579360408000906, 0.4286762020035964},
    {0.9999999999999779, 0.6624161297489367, 0.42025632127341656},
    {0.9999999999999777, 0.6668888735333959, 0.41140637540952824},
    {0.9999999999999777, 0.6713557295869282, 0.40206789113388525},
    {0.9999999999999775, 0.6758182149038043, 0.3921718908087272}};
